我在每个循环中都有一个link_to。正在循环的对象确实包含新记录(有时)。父对象是book
,嵌套对象是photo
。
- @book.photos.each do |photo|
= link_to image_tag(photo.pic.url), edit_book_photo_path(@book)
错误是可以预测的:
No route matches {:action=>"edit", :controller=>"photos", :id=>nil, :book_id=>147, :format=>nil} missing required keys: [:id]
我尝试使用以下方法检查new_record:
- @book.photos.each do |photo|
= link_to image_tag(photo.pic.url), edit_book_photo_path(@book) unless photo.new_record?
和
- @book.photos.each do |photo|
- unless photo.new_record?
= link_to image_tag(photo.pic.url), edit_book_photo_path(@book)
但是得到同样的错误。
除非我没有做link_to,否则工作正常,例如我创建了一个列表
%ul
- @book.photos.each do |photo|
- unless photo.new_record?
%li= "This is id #{photo.id}"
我看到有正确数量的子对象并删除了除非给我一个额外的没有id。
所以,显然我让这个过于复杂,因为它应该很简单,或者我误入歧途。目标:::在@book.photos.pic
表单上呈现图片列表(book
),每个图片都是编辑photo
记录的链接。
建议?
答案 0 :(得分:1)
尝试添加图片ID:
- @book.photos.each do |photo|
= link_to image_tag(photo.pic.url), edit_book_photo_path(@book, photo)
答案 1 :(得分:1)
- @book.photos.select(&:persisted?).each do |photo|
= link_to image_tag(photo.pic.url), edit_book_photo_path(@book, photo)