2012-05-21 48 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助手的工作方式。