2011-12-27 2 views
1

я использовал следующие учебные пособия:загружать несколько файлов через контроллер, используя скрепку и рельсы

http://patshaughnessy.net/2009/5/16/paperclip-sample-app-part-2-downloading-files-through-a-controller

Это руководство проведет вас через загрузку файлов через контроллер, а не как статические файлы. Я сделал это, чтобы контролировать доступ к файлам.

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 

Итак, как я уже говорил выше, загружая просто отлично. Одна вещь, которая отличается, но ожидаемая, когда она хранит файл, она использует идентификатор из модели активов. Это все хорошо и хорошо, однако у меня возникают проблемы с правильной настройкой 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, который это не касается. Я не совсем уверен, правильно ли задаю эти вопросы, но я застрял. Одна из моих идей заключалась в создании контроллера активов и перемещении метода изображений туда, но я не уверен, насколько это поможет.

Любые мысли? Спасибо!

+0

это может помочь вам http://stackoverflow.com/questions/11605787/uploading-multiple-files-with-paperclip/19379756#19379756 – devudilip

ответ

0

@ Раймонд, просто поместите последний фрагмент кода внутри _form.html.erb, соответствующий вашим visual_submissions. Просто убедитесь, что вы положили его перед <% = f.submit%>, внутри form_for, конечно. Надежда, что помогает,

Смежные вопросы