Rails: выбор переключателя для объектов вложенных форм

У меня есть следующая форма для photo_album, которая использует функцию вложенных форм Rails для сохранения фотографий при обновлении photo_album. И возникли проблемы с выбором значения переключателя. Я хочу, чтобы только одна из фотографий могла быть выбрана в качестве обложки альбома, но из-за того, как рельсы создают идентификаторы и имена элементов формы, я могу выбрать все фотографии в качестве обложек альбомов. Есть ли обходной путь?

<% 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 %>  

И ниже приведен html, созданный rails (что является частью проблемы) для переключателей:

<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>

person Dharam Gollapudi    schedule 02.09.2009    source источник


Ответы (1)