문제

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top