2011-09-22 131 views
3

我想在CarrierWave上傳器中設置CarrierWave的默認網址。要做到這一點,我想用資產管道做以下的uploaders/image_uploader.rb: 高清DEFAULT_URL IMAGE_PATH(「question_mark.png」) 結束Rails 3.1外部視圖資產管道

但它失敗,因爲:undefined method IMAGE_PATH」爲:ImageUploader`

然後我試圖添加include ActionView::Helpers::AssetTagHelperuploaders/image_uploader.rb但得到這個錯誤:undefined local variable or method配置」爲:ImageUploader`

任何想法,我怎麼能得到image_path助手視圖外的工作?

回答

1

我問了一個類似的問題here並得出結論,沒有辦法得到模型中工作的任何*_path*_url助手。我知道它肯定不應做(違反MVC等等),但現在看來,這根本不能被全部完成......

我的問題是設置default_url一個回形針附件,我結束了設置它我會給image_tag路徑(簡單地'image.png'如果image.png位於app/assets/imagespublic/images),然後訪問時,它使用image_path。這也適合你嗎?

0

不知道到底是什麼,我想在這裏做,結束了它周圍,但萬一有人來這裏想要添加_path或_url助手在他們的模型中工作,這樣做:

class Post < ActiveRecord :: Base 
    include Rails.application.routes.url_helpers 

    # This is so you can use _url params 
    # you'll need to define the host in your config for it to work though 
    default_url_options[:host] = Rails.configuration.host 

    # ... 

end 
+0

Rails.application.routes.url_helpers應當用於在routes.rb中定義生成的URL,而不是圖像的URL –

0

我有一個類似的問題,我通過在Rails 3.2中執行以下操作來解決它。

我聲明瞭以下模塊:

module MyApp::AssetHelper 
    def config 
    @config ||= ActionController::Base.config 
    @config.asset_host = 'http://whereveryouhostyour.assets' #not needed if you have this defined in your environment file 
    @config 
    end 

    def controller 
    ActionController::Base 
    end 
end 

我包括以下傭工到模型中,我想用asset_tag傭工

include Sprockets::Helpers::RailsHelper 
include MyApp::AssetHelper 

這讓我打電話給asset_tag幫手在哪裏需要它。