2012-05-21 46 views
1

rails中的輔助方法自動檢測應用程序的根URL。例如,user_signup_url自動使用mydoimain.com/user_signupRails:在環境文件中獲取root_url

但是,在我的environments/production.rb中,我必須手動設置我的主機。

config.action_mailer.default_url_options = { :host => 'mydomain.com' } 

有沒有辦法讓這個自動設置?或許如下:

config.action_mailer.default_url_options = { :host => ROOT_URL } 

謝謝!

+0

請注意,user_signup_url不會自動知道或關心域 - 它的網址是「/ user_signup」。 –

+0

是不是user_signup_path? – Karan

+0

具有相同的需求。你找到方法了嗎? –

回答

0

如果我沒有記錯,主機是從輸入的請求「猜到」。這就是爲什麼它可以在你的控制器和你的視圖中訪問。但是,在郵件級別沒有請求對象,所以這就是爲什麼你必須在這種情況下冗長。

0

在全球範圍內設置一個常量,與您所描述的完全相同。把它放在application.rb的頂部,或者在每個開發環境文件中可能有不同的值?

或者,也許你可以做一個Constants類與特定的常量內聲明? Rails的開始前在shell(您的通話將Constants::ROOT_URL。)

或者設置環境變量與ENV['ROOT_URL']

訪問它的其他答案提到taht _path傭工不需要域名。這是真的 - 但我不確定_url助手是如何工作的,因爲他們應該給你一個完整的URI,我認爲?您可能需要調查_url助手的工作方式。