2009-09-02 2 views
0

photo_album을 업데이트하는 동안 사진을 저장하는 데 Rails의 중첩 된 양식 기능을 사용하는 photo_album에 대해 다음 형식을 사용합니다. 라디오 버튼 값을 선택하는 데 문제가 있습니다. 사진 중 하나만 앨범 표지로 선택할 수 있지만, 레일이 양식 요소 ID와 이름을 생성하는 방식으로 인해 앨범 표지처럼 모든 사진을 선택할 수 있습니다. 해결 방법이 있습니까?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> 

답변

1

나는이 경우에 대신 radio_button_tag을 사용할 거라고 생각 것이며 :

<% 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이다 같은 이름을 사용하십시오.

이 가까이 있어야 - 당신은 아직도 당신이 사실을 전달하고자 할 때 파악해야합니다

<%= radio_button_tag "cover", photo.id, todo %> 

당신은 또한 radio_button 도우미로 이름을 지정할 수도 있습니다 만, 그렇지 않은 꽤 맞는 모델 이니까 radio_button_tag은 나에게 더 의미가 있습니다 - 나는 틀릴 수 있습니다.