2016-03-27 125 views
0

我有一個項目模型,嵌套屬性來自:item_galleries展示多個圖像。我可以使用嵌套圖像創建項目,但編輯時遇到問題。以rails的形式顯示和更新嵌套的屬性

我希望能夠顯示附加到該項目的每個圖像,並且能夠編輯每個圖像。

誰曾幫助我得到虛擬餅乾或餅!

對於「項目表視圖」:

<%= 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

要顯示的圖像只需使用一個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? %> 

編輯: 我固定的形象,感謝指出了這一點的意見。

+0

我試過這個,但是在#「 – Dileet

+0

」時出現錯誤「undefined method' image」使用p.index時我也遇到錯誤「找不到'ItemGallery' ID「= 0" 。所以我所做的只是p.index + 1,它工作。只需要將其他問題排序。 – Dileet

+0

想通了!感謝您指出正確的方向。這固定它<如果p.object.image.present?image_tag p.object.image? %> – Dileet