我已經使用了以下教程:上傳多個文件使用回形針和軌道
本教程將引導您通過控制器下載文件,而不是靜態文件。我這樣做是爲了控制對文件的訪問。
http://emersonlackey.com/article/paperclip-with-rails-3
本教程引導您完成創建您的文件模型,並使用允許多文件上傳
所以,在大多數情況下,我得到了上傳到正常工作的過程中,但是,問題在於下載。
有點背景。我有以下幾個關鍵模型。
class VisualSubmission < ActiveRecord::Base
has_many :assets
accepts_nested_attributes_for :assets, :allow_destroy => true;
end
class Asset < ActiveRecord::Base
belongs_to :visual_submission
has_attached_file :image, :styles => { :original => "100%", :large => "600x600>", :small => "150x150>", :thumb => "50x50>"}, :convert_options => {:all => "-auto-orient"},
:path => ':rails_root/secure/system/:attachment/:id/:style/:basename.:extension',
:url => '/:class/:id/:attachment?style=:style'
end
爲了通過控制器來下載文件,在操作創建爲這樣:
def images
visual_submission = VisualSubmission.find(params[:id])
style = params[:style] ? params[:style] : 'original'
send_file visual_submission.image.path(style), :type => visual_submission.image_content_type, :disposition => 'inline'
end
所以,正如我上面所說,上傳就好了。有一點是不同的,但預期,當它存儲文件時,它使用資產模型中的ID。這一切都很好,但是,我現在無法正確獲取URL。我創建了一條到我的圖像的路線:
resources :visual_submissions do
member do
get :images
end
end
這就是我的路線。
images_visual_submission GET /visual_submissions/:id/images(.:format){:行動=> 「圖像」,:控制器=> 「visual_submissions」}
現在的代碼段,在理論上應該是訪問圖像。
這是來自我的編輯表單。它應該顯示當前存儲的圖像。
<%= f.fields_for :assets do |asset_fields| %>
<% unless asset_fields.object.new_record? %>
<p>
<%= asset_fields.object.image.url %>
</p>
<% end %>
<% end %>
現在,這顯然不起作用。我不確定這裏有什麼對象,但我知道的是,我的圖像應該通過我的visual_submissions控制器,這是不觸及的。我不完全確定,如果我正確地問這個問題,但我卡住了。我有一個想法是創建一個資產控制器,並將圖像方法移到那裏,但我不知道這會有多大幫助。
有什麼想法? 謝謝!
這可以幫助你 http://stackoverflow.com/questions/11605787/uploading-multiple-files-with-paperclip/19379756#19379756 – devudilip 2013-10-15 11:14:45