2013-11-27 54 views
0

我正在使用帶載波寶石的Rails 3。Carrierwave刪除圖片並將其恢復爲默認設置

我設法去掉從我的用戶模型像這樣的頭像圖片:

@user.remove_photo! 

和它完美的作品。但是,我想將該用戶的圖片url恢復爲default_url(這是每個用戶擁有的圖片,直到他們上傳圖片爲止)。

任何想法如何?

-

圖像顯示代碼:

<%= image_tag(@user.photo.send(:layout).url, :alt => @user.full_name, :class => 'photo large') %> 

DEFAULT_URL代碼:

def default_url 
    "default_photo.jpg" 
    end 
+0

我不會設置默認用戶頭像中的照片。如果用戶圖像不存在,我會在靜態資產中顯示圖像並執行if語句,以顯示默認圖像。 – fatfrog

+0

其實這是我能想到的唯一解決方案。我想知道如果寶石有任何方式將圖片設置回默認。 – content01

+0

粘貼您的代碼以顯示圖片,並將代碼粘貼到您的def url – fatfrog

回答

0

從文檔:

https://github.com/carrierwaveuploader/carrierwave

在很多情況下,尤其是在處理圖片時,可能會提供一個很好的 想法來提供默認網址,如果上傳的文件不是 ,則爲備用網址。您可以通過重寫DEFAULT_URL方法 在你上傳很容易做到這一點:

class MyUploader < CarrierWave::Uploader::Base 
    def default_url 
    "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 
end 

或者,如果您使用的是Rails的資產管道:

class MyUploader < CarrierWave::Uploader::Base 
    def default_url 
    ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 
    end 
end 
+0

不,你不明白我的問題。我已經有了。問題是回到default_url後我刪除了一張照片。 – content01

+0

您沒有關注代碼,它應該是「/」+ [version_name,「default.png」]。compact.join('_') – fatfrog