2013-04-29 15 views
24

Ho questo modulo in una vista nel mio progetto. Devo passare lo task_id a un determinato controller, ma il log non sembra ricevere i parametri. Non so quale sia il problema.Campo nascosto in forma di rotaie

<%= form_for :taskid, :url => {:action=>"index", :controller=>"statistics"}, :html => {:class => "nifty_form", :method => "GET"} do |f| %> 
    <%f.hidden_field :task_id, :value => task.id%> 
    <td><%= f.submit "اختر مهمة لاظهار احصائياتها منفرده"%></td> 
<% end %> 
+0

Controllare il codice sorgente HTML e per vedere che il valore è in realtà lì. –

+0

Che cos'è: taskid? È solo un modello, non un oggetto. E i suoi attributi sono vuoti. Passare l'oggetto esistente @task dal controller a questo modulo o utilizzare hidden_field_tag –

risposta

56

Ti manca il = dopo <%. Il segno di uguale è necessario ogni volta che si desidera visualizzare il risultato sull'HTML, quindi viene utilizzato, ad esempio, con i metodi dei tag di campo o il rendering. Non si deve usare il pari quando si utilizza un if, per esempio, perché questo non è ciò che si desidera stampare (bene, può essere, ma molto probabilmente non lo è)

<%= form_for :taskid, :url => {:action=>"index", :controller=>"statistics"}, :html => {:class => "nifty_form", :method => "GET"} do |f| %> 
    <%= f.hidden_field :task_id, :value => task.id%> 
    <td><%= f.submit "اختر مهمة لاظهار احصائياتها منفرده"%></td> 
<% end %> 

Tuttavia, come @AntonGrigoriev ha sottolineato, è necessario utilizzare un oggetto se si dispone, come questo

<%= form_for @task, :url => {:action=>"index", :controller=>"statistics"}, :html => {:class => "nifty_form", :method => "GET"} do |f| %> 

o si può semplicemente utilizzare il hidden_field_tag

<%= hidden_field_tag :task_id, task.id %> 
-4

Hi si prega di verificare con il seguente codice per sé ND valore nascosto nelle rotaie, ho provato e ha lavorato per una delle mie applicazioni:

hidden_field_tag(name, value = nil, options = {}) pubblica esempio:

<%= hidden_field_tag(:field_name,[email protected]_status)%>