How do I select a default value for a collection of radio buttons in Formtastic?
-
13-10-2019 - |
문제
I'm building a form in Rails3 and Formtastic. I have the following field:
<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"} %>
Which generates HTML similar to:
<input id="post_one" name="post" type="radio" value="one" />Awesome</label>
<input id="post_two" name="post" type="radio" value="two" />Great</label>
<input id="post_three" name="post" type="radio" value="three" /> Nice</label>
That work flawlessly!
Now I'd like to know how I could pass in an option that would mark "Great" as the default (selected) value. I tried doing the following, but I can't get it to work.
<%= f.input :housing, :as => :radio, :collection => {"Awesome" => "one", "Great" => "two", "Nice" => "three"}, :default => "one" %>
I also tried passing in :selected
and :checked
instead of :default
but alas, it does not work.
Does anybody know of a way to do this?
Thanks!
Edit: Aditya brings up a very good point. Some searching yielded this helpful tip.
해결책
Have you tried setting the value of the :housing attribute of your model to the default value? You could do that just before you start the form or in the controller or the best way is to do that in the model initialize? View may not be the best place to default IMHO.
다른 팁
Set the HTML options on a specific radio input option with a 3rd element in the array for a collection member as follows:
<%= f.input :author, :as => :radio, :collection => [["Test", 'test'], ["Try", "try", {:disabled => true}]]
There is no longer an option to do this in the view, the correct way is to initialize the model with the correct value by default, or to put the model into that state in the controller, as described by Aditya.