2012-05-17 78 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