Чтобы сохранить файлы, вам нужно создать модели активов, а также назначить прикрепленный_файл этим моделям (которые вы также назвали asset
, что может привести к путанице).В простом случае это будет выглядеть так:
user = User.find(id)
asset = user.assets.new
asset.asset = params[:asset]
asset.save
Чтобы сделать несколько файлов, просто сделайте быстрый цикл:
user = User.find(id)
params[:assets].each do |asset|
asset = user.assets.new
asset.asset = asset
asset.save
end
Однако вы делаете несколько не-стандартные вещи здесь, и делает жизнь сложнее для себя, чем это должно быть.Вместо использования file_field_tag
вы должны использовать помощник file_field
с экземпляром Asset в памяти.Например, если бы вы следовали учебнику, на который вы ссылались, у вас было бы что-то вроде:
<% form_for @user do |f|
<% f.fields_for :assets do |asset| %>
<%= asset.file_field :asset %>
<% end %>
<% end %>
Вы также должны сообщить своей модели User, что при сохранении можно принимать модели дочерних активов:
def User
accepts_nested_attributes_for :assets
end
Затем в действии контроллера вы просто создадите несколько новых ресурсов в памяти, чтобы цикл в fields_for работал:
def upload
@user = User.find(id)
5.times do { @user.assets.build }
end
Надеюсь, это имеет смысл.Продолжай - ты доберешься до места.