У меня был подобный и в конечном итоге найти причину дополнительных атрибутов (в вашем случае: tag_list) не сохраняется при загрузке нового изображения.
Если вы посмотрите на ::Refinery::ImageController
вы увидите, что создать действие actyally создать изображение с помощью:
unless params[:image].present? and params[:image][:image].is_a?(Array)
@images << (@image = ::Refinery::Image.create(params[:image]))
else
params[:image][:image].each do |image|
@images << (@image = ::Refinery::Image.create(:image => image))
end
end
params[:image][:image]
является массивом когда несколько uploed несколько файлов включены (по умолчанию она находится). Но тогда действие использует только значения массива при создании изображений, игнорируя другие параметры.
Я быстро пишу ниже обходным, которые позволяют сохранить другие Params на нескольких загрузки изображений:
unless params[:image].present? and params[:image][:image].is_a?(Array)
@images << (@image = ::Refinery::Image.create(params[:image]))
else
images_params = params[:image].dup
images_params.delete(:image)
params[:image][:image].each do |image|
@images << (@image = ::Refinery::Image.create({:image => image}.merge(images_params)))
end
конец
Это, вероятно, не самое элегантное решение бушель это делает трюк.
Чтобы использовать его в своем приложении, вам необходимо создать декоратор для ::Refinery::ImageController
, чтобы скопировать и отредактировать действие create в нем. (см. «Расширение контроллера» в Refinery's Guides)