web-dev-qa-db-fra.com

Comment utiliser hidden_field dans un form_for dans Ruby on Rails?

J'ai lu this , mais je suis nouveau sur RoR donc j'ai un peu de mal à le comprendre. J'utilise un formulaire pour créer un nouvel enregistrement de demande, et toutes les variables que je dois envoyer existent déjà. Voici les données que je dois envoyer (c'est dans une boucle do):

:user_id => w[:requesteeID]
:requesteeName => current_user.name
:requesteeEmail => current_user.email
:info => e

Voici mon formulaire, qui fonctionne jusqu'à présent, mais envoie uniquement des valeurs NULL pour tout:

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.submit e %>
    </div>
<% end %>

Comment utiliser hidden_fields pour envoyer les données que j'ai déjà? Merci d'avoir lu.

68
ben

Réf hidden_field ou hidden_field_tag

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.hidden_field :some_column %>
        <%= hidden_field_tag 'selected', 'none'  %>
        <%= f.submit e %>
    </div>
<% end %>

puis dans le contrôleur

 params[:selected]="none"
 params[:request][:some_column] = request.some_column

Notez quand vous avez utilisé

   <%= f.hidden_field :some_column %>

ça change en html

<input type="hidden" id="request_some_column" name="request[some_column]" value="#{@request.some_column}" />

et quand vous avez utilisé

<%= hidden_field_tag 'selected', 'none'  %>

ça change en html

   <input id="selected" name="selected" type="hidden" value="none"/>
89
Salil

Vous pouvez envoyer une valeur personnalisée en tant qu'entrée masquée pour votre modèle comme ceci:

<%= f.hidden_field :version, value: 12 %>
58
Bruno Paulino