我有一个:具有嵌套属性的项目模型:item_galleries展示多个图像。我能够使用嵌套图像创建项目,但是在编辑方面存在问题。
我希望能够显示附加到项目的每个图像,并能够编辑每个图像。
谁帮助我获得了虚拟饼干或饼干?
对于"项目表单视图":
<%= f.fields_for :item_galleries do |p| %>
<%= p.label :image %>
<%= link_to "Edit Attachment", edit_item_gallery_path(p) %>
<%= p.file_field :image, :multiple => true, name: "item_galleries[image][]" %>
<% end %>
我想在修改附件链接旁边显示图片。
这是items_controller中的编辑功能:
def edit
@item = Item.find(params[:id])
@item_galleries = @item.item_galleries.all
end
def update
respond_to do |format|
if @item.update(item_params)
format.html { redirect_to @item, notice: 'Item was successfully updated.' }
else
format.html { render :edit }
end
end
end
目前,edit_item_galleries_path(p)带给我的链接是"http://localhost:3000/item_galleries/%23%3CActionView::Helpers::FormBuilder:0x007ffce80b2358%3E/edit"
答案 0 :(得分:1)
要显示图像,只需使用image_tag。
<%= p.label :image %>
<%= link_to "Edit Attachment", edit_item_gallery_path(p) %>
<%= image_tag p.image if p.object.image.present? %>
修复编辑链接:您希望将id而不是整个表单构建器帮助程序传递给您的URL。使用p.index
将返回元素的id(如果它的持久性)和生成的uid(如果它尚未持久化)。
<%= link_to "Edit Attachment", edit_item_gallery_path(p.index) %>
所以整个代码看起来像这样:
<%= p.label :image %>
<%= link_to "Edit Attachment", edit_item_gallery_path(p.index) %>
<%= image_tag p.image if p.image.present? %>
编辑: 我修复了图片,感谢你在评论中指出这一点。