Я следил за этим руководством, пытаясь интегрировать Paperclip в свое приложение Rails 3. .
Однако мой случай выглядит немного иначе, чем то, что описано в этом уроке.
В моем случае User
моделей уже существуют в базе данных, и я хочу загрузить файл(ы) и связать их с загрузчиком.
Вот соответствующие части моего кода:
class User < ActiveRecord::Base
has_many :assets, :foreign_key => "uploader_id"
end
class Asset < ActiveRecord::Base
belongs_to :uploader, :class_name => "User"
has_attached_file :asset, :styles => { :thumb => "100x100#" }
end
Основное различие между моим случаем и учебным пособием заключается в том, что поле ввода для загрузки не находится внутри формы User
:
# views/lounge/index.html.erb
<%= form_tag('/lounge/upload', :multipart => true) do %>
<input id="uploader_id" name="uploader_id" type="hidden" />
<%= file_field_tag "assets[]", :multiple => true %>
<% end %>
Значение скрытого поля ввода uploader_id
контролируется Javascript.
При отправке формы вызывается метод upload
:
class LoungeController < ApplicationController
def upload
uploader = User.find(params[:uploader_id])
# ??
end
end
Что мне делать с params[:assets]
, чтобы сохранить загруженные файлы в файловую систему и создать соответствующие модели Asset
в базе данных?