Reputation: 18127
How can you have a hidden field with simple form?
The following code:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
results in this error:
undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
Upvotes: 184
Views: 138869
Reputation: 1
None of the above worked perfectly in my case, as they were leaving a blank rectangle on my frontend. What worked for me was -
<%= f.text_field :title, value: "some value", type: "hidden" %>
Upvotes: 0
Reputation: 703
Correct way (if you are not trying to reset the value of the hidden_field input) is:
f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form
Where :method
is the method that when called on the object results in the value you want
So following the example above:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
The code used in the example will reset the value (:title) of @movie being passed by the form. If you need to access the value (:title) of a movie, instead of resetting it, do this:
= simple_form_for @movie do |f|
= f.hidden :title, :value => params[:movie][:title]
= f.button :submit
Again only use my answer is you do not want to reset the value submitted by the user.
I hope this makes sense.
Upvotes: 5
Reputation: 3366
= f.input_field :title, as: :hidden, value: "some value"
Is also an option. Note, however, that it skips any wrapper defined for your form builder.
Upvotes: 5
Reputation: 96454
Shortest Yet !!!
=f.hidden_field :title, :value => "some value"
Shorter, DRYer and perhaps more obvious.
Of course with ruby 1.9 and the new hash format we can go 3 characters shorter with...
=f.hidden_field :title, value: "some value"
Upvotes: 293
Reputation: 83680
try this
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
Upvotes: 330