2010-06-28 3 views
48

J'ai lu this, mais je suis nouveau à RoR donc j'ai un peu de mal à le comprendre. J'utilise un formulaire pour créer un nouvel enregistrement de requête, et toutes les variables que j'ai besoin d'envoyer existent déjà. Voici les données que je dois envoyer (ce qui est dans une boucle do):Comment utiliser hidden_field dans un form_for dans Ruby on Rails?

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

Voilà ma forme, qui fonctionne jusqu'à présent, mais seulement envoyer des valeurs NULL pour tout:

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

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

+0

Juste essayé <% = f.hidden_field: id_utilisateur,: valeur => w [: calleeID]%> mais il vient d'envoyer la valeur NULL – ben

Répondre

65

Ref 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 

Remarque lorsque vous utilisez

<%= f.hidden_field :some_column %> 

il changer 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' %> 

il changer html

<input id="selected" name="selected" type="hidden" value="none"/> 
+0

Cela a fonctionné très bien. Merci pour cette réponse rapide! – ben

30

Vous pouvez envoyer une valeur personnalisée comme entrée cachée pour votre modèle comme ça:

<%= f.hidden_field :version, value: 12 %> 
Questions connexes