2012-05-17 79 views
1

我试图添加标签到RefineryCMS中的图像模型(尝试在1.0.8和2.0.4),添加了attr_accessible:tag_list,需要的行为作为标记并设置视图,但问题是,只有当编辑/更新以前上传的图像时,标签才会保存 - 即使它使用相同的形式,也不会在第一次上传时保存...在RefineryCMS中为图像添加标签

任何想法?看日志的时候,只是不节能

它发生在轨道和炼油厂的每一个版本我都试过...

的标签正在经历后...

回答

1

我也有类似问题,并最终找到附加属性的原因(在你的情况下: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]是一个Array当启用多个多个文件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 

它可能不是最完美的解决方案BU它的伎俩。

要在您的应用中使用它,您必须为::Refinery::ImageController创建一个装饰器来复制和编辑其中的创建动作。 (参见'扩展控制器'Refinery's Guides