以rails形式显示和更新嵌套属性

时间:2016-03-27 00:13:23

标签: ruby-on-rails

我有一个:具有嵌套属性的项目模型: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"

1 个答案:

答案 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? %>

编辑: 我修复了图片,感谢你在评论中指出这一点。