DEV Community

Cover image for Rails: Radio Buttons In Nested Forms

Rails: Radio Buttons In Nested Forms

Yechiel Kalmenson on September 12, 2017

The story behind my first Stack Overflow answer. I was recently asked to add a feature to a Rails app. The app is a Contact Management S...
Collapse
 
bertbruynooghe profile image
Bert Bruynooghe

FYI: you can write <%= radio_button_tag "contact[default_telephone]" %> as <%= radio_button_tag :contact, index: :default_telephone %>, which leads to same name, but it feels a bit more 'railsy'.

Collapse
 
yechielk profile image
Yechiel Kalmenson • Edited

I'm not seeing that.

According to the documentation the second argument passed to radio_button_tag is the value of the input. Writing the tag the way you did gives me a radio button that looks like this:

<input type="radio" name="contact" id="contact__:index__:default_telephone_" value="{:index=>:default_telephone}">

I tried a few other variations and none gave e a properly formatted radio button.

Collapse
 
bertbruynooghe profile image
Bert Bruynooghe

Sorry, I was a bit quick to reply:

<%= f.radio_button :default_telephone_index, phone_form.index %>

should give you what you want, considering you have to have accessors for default_telephone_index on you model/form_object. (Which would be a good approach anyway, since you want as little code as possible in your view.) Also note that the radio_button is on the overall form, not the phoneNumber formbuilder.

Also, the original intent of my comment was to point you to the use of the :index option not to have to compose names yourself, but it only works on methods like radio_button on the formbuilder, not on _tag methods.

Thread Thread
 
yechielk profile image
Yechiel Kalmenson

At that makes more sense :)

Collapse
 
jess profile image
Jess Lee

Ah! I've been dealing with radio buttons lately. This is really interesting, thanks for sharing in such detail.

Collapse
 
yechielk profile image
Yechiel Kalmenson

Hope it was helpful.