동일한 모델에서이 모델의 모든 엔티티에 대한 목록 (동일한 이름의 이미지)과 해당 모델의 목록을 만듭니다. 모델은 일대 다 관계에서 갑 (Deck)이라는 두 번째 모델과 연관되어 있습니다 (하나의 갑판에는 여러 이미지가 있음). 내보기의 목록은 다음과 같습니다.잘못된 모델 객체에 대한 레일 경로 도우미
# image list
<% @deck.images.each do |img| %> # iterates also through invalidated model
<%= link_to 'Delete', deck_image_path(@deck, img),
:confirm => 'Sure?', :method => :delete %>
<% end %>
@image 개체에 대한 유효성 검사가 실패 할 때 문제가 발생합니다. 반복은 유효하지 않은 이미지 객체를 통해서도 반복하고 다음 행에 해당 객체에 대한 경로가 없다는 오류를 제공합니다.
모든 개체에서 .new_record?를 확인할 수 있지만이 방법이 더 좋습니까? 아니면 절대적으로 잘못된 것을하고 있습니까? - 컨트롤러
def create
@deck = Deck.find(params[:id])
@image = @deck.images.build(params[:image])
respond_to do |format|
if @image.save
# redirect
flash[:notice] = "Saved succesfully."
format.html { redirect_to(@deck) }
else
# render
format.html {
flash.now[:error] = "Could not be saved."
render 'decks/show'
}
end
end
end
업데이트 2 - 더 혼란
음이 확인 지금 절대적으로 혼란 스러워요/
업데이트 1, 나는 다른 이러한 문제로 볼 수 아무도 없다.
# working
@image = Image.new(params[:image])
@image.deck = @deck
에
# not working
@image = @deck.images.build(params[:image])
에서 만드는 방법에서 두 번째 라인을 변경하면 오류없이 작동하는 것 같다. 그 차이점은 무엇입니까?
업데이트 3 -보기 및 오류 메시지가
<h3>Upload Image</h3>
<%= form_for @image, :url => deck_images_path(@deck), :html => { :multipart => true } do |form| %>
<fieldset>
<legend>Upload new image</legend>
<%= render :partial => 'shared/model_errors', :locals => {:model => @image} %>
<%= form.file_field :image %><br/>
<%= form.submit "Upload", :class => 'btn btn-primary' %>
</fieldset>
<% end %>
<h3>Show all existing images</h3>
<% @deck.images.each do |img| %>
<%= image_tag img.image.url %>
<%= link_to 'Delete'.html_safe, deck_image_path(@deck, img) %>
<% end %>
오류 메시지 :
는No route matches {:controller=>"images", :action=>"destroy", :deck_id=>#<Deck id: 1,
name: "Test", description: "Test", created_at: "2012-12-10 20:44:22",
updated_at: "2012-12-10 20:44:22">, :id=>#<Image id: nil, created_at: nil,
updated_at: nil, image_file_name: nil, image_content_type: nil,
image_file_size: nil, image_updated_at: nil, deck_id: 1>}
내가 컨트롤을 보여주십시오 – Jean
추가 ImageController # create – shadowhorst
당신의 컨트롤러는 괜찮습니다.하지만보기에 좋지 않습니다. form_for의 완성 된 코드를 붙여주세요. 삭제 링크를 왜 만들지 않는 이유는 무엇입니까? 존재하지 않는 이미지. – Jean