我有photo_album的以下表单,它使用Rails的嵌套表单功能在更新photo_album时保存照片。并且无法选择单选按钮值。我只希望其中一张照片能够作为专辑封面选择,但由于rails生成表单元素ID和名称的方式,我可以选择所有照片作为专辑封面。有没有解决方法?
<% form_for @photo_album do |f| %>
<%= f.error_messages %>
<% @photo_album.photos.each do |photo| %>
<% f.fields_for :photos, photo do |photo_fields| %>
<p>
<%= image_tag url_for_image_column(photo, "data", :thumb) %>
</p>
<p>
<%= photo_fields.label :title %>
<%= photo_fields.text_field :title %>
</p>
<p>
<%= photo_fields.label :body %>
<%= photo_fields.text_area :body %>
</p>
<p>
<%= photo_fields.radio_button :cover, "1" %>
<%= photo_fields.label :cover, 'Album Cover', :class => 'option' %>
<%= photo_fields.check_box :_delete %>
<%= photo_fields.label :_delete, 'Delete', :class => 'option' %>
</p>
<% end %>
<% end %>
<p>
<%= f.submit @photo_album.new_record? ? 'Create' : 'Update' %>
</p>
<% end %>
以下是单选按钮的rails生成的html(这是问题的一部分):
<p>
<input type="radio" value="1" name="photo_album[photos_attributes][0][cover]" id="photo_album_photos_attributes_0_cover_1"/>
<label for="photo_album_photos_attributes_0_cover" class="option">Album Cover</label>
<input type="hidden" value="0" name="photo_album[photos_attributes][0][_delete]"/><input type="checkbox" value="1" name="photo_album[photos_attributes][0][_delete]" id="photo_album_photos_attributes_0__delete"/>
<label for="photo_album_photos_attributes_0__delete" class="option">Delete</label>
</p>
答案 0 :(得分:1)
我想在这种情况下你想要使用radio_button_tag
代替并使用相同的名称。
这应该很接近 - 您仍然需要弄清楚何时传递true:
<%= radio_button_tag "cover", photo.id, todo %>
您也可以使用radio_button帮助器指定名称,但它不太适合模型,因此radio_button_tag
对我更有意义 - 我可能会弄错。