我正在尝试将标签添加到RefineryCMS中的Image模型(尝试1.0.8和2.0.4),添加了attr_accessible:tag_list,需要act-as-taggable并设置视图,但问题是标签仅在编辑/更新以前上传的图像时保存 - 而不是在第一次上传时,即使它使用相同的表格...
有什么想法吗?
它发生在我试过的每个版本的rails和Refinery上......
标签在查看日志时会在帖子中进行,只是不保存...
答案 0 :(得分:1)
我遇到了类似的问题,最终发现额外属性的原因(在您的情况下为:tag_list)没有保存在新的图片上传中。
如果您查看::Refinery::ImageController
,您会看到创建操作通过以下方式创建图像:
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]
是一个数组(默认情况下)。但是然后动作只在创建图像时使用数组值,忽略其他参数。
我快速编写以下解决方法,允许在多个图像上传时保存其他参数:
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
创建一个装饰器,以复制和编辑其中的创建操作。 (参见Refinery's Guides中的'扩展控制器')