2014-09-06 27 views
0

在我當前的解決方案中,我可以在edit表單中放置複選框,以便用戶可以刪除附件。但是,沒有跡象表明用戶已經上傳了文件,該文件的名稱等,以便他可以決定是否刪除。指示上傳的文件存在於編輯表單中 - 回形針

現在窗體看起來像這樣。第material是一個現有的,未來3是由於

def edit 
    @post = Post.find(params[:id]) 
    3.times { @post.post_materials.new } 
    end 

正如你所看到的,這是很難區分它們。理想情況下,我希望第一個材質文件名以某種方式出現。

http://i.imgur.com/9IgwbV2.png

<%= form_for @post, :html => { :multipart => true } do |f| %> 

    <%= f.label :title %> 
    <%= f.text_field :title %> 

    Materials: 
    <ul> 
    <%= f.fields_for :materials, :html => { :multipart => true } do |materials_form| %> 
     <li> 
     <%= materials_form.label :asset %> 
     <%= materials_form.file_field :asset %> 

     <%= materials_form.label :_destroy, class: "checkbox inline" do %> 
      Remove attachment <%= materials_form.check_box :_destroy %> 
     <% end %> 
     </li> 
    <% end %> 
    </ul> 
    <%= f.submit "Submit", class: "btn btn-large" %> 
<% end %> 

回答

1

運行回形針的generator創建遷移到你的模型增加4個屬性,你可以看到here。這些屬性是:

<attachment>_file_name 
<attachment>_file_size 
<attachment>_content_type 
<attachment>_updated_at 

因此,如果您運行的發電機是這樣的:在您PostMaterial模型rails generate paperclip post_material asset,你將有以下屬性:

asset_file_name 
asset_file_size 
asset_content_type 
asset_updated_at 

然後,在你的代碼,你可以做一些事情像這樣:

if materials_form.object.asset.exists? #object represents the current post_material instance 
    #show a label with object.asset_file_name 
else 
    #render materials_form.file_field :asset 
end 
+0

這裏的關鍵是我可以通過使用'materials_form.object'來訪問'材料'。謝謝! – Heisenberg 2014-09-06 20:54:36