在我的Ruby on Rails 3.1应用程序中,我有一个这样的链接:
<%= link_to 'Home', root_url %>
Run Code Online (Sandbox Code Playgroud)
在我的开发.机器它呈现与"localhost:3000"的链接.在生产时,它会呈现一个带有IP地址的链接,如"83.112.12.27:8080".我想强制rails渲染域地址而不是IP地址.我怎样才能设置root_url?
luc*_*tte 41
您正在寻找ActionController的默认URL选项.所以你可以这样做:
class ApplicationController < ActionController::Base
def default_url_options
if Rails.env.production?
{:host => "www.example.com"}
else
{}
end
end
end
Run Code Online (Sandbox Code Playgroud)
这也适用于ActionMailer.同样,两者都可以在您的环境.rb或application.rb中设置
# default host for mailer
config.action_mailer.default_url_options = {
host: 'example.com', protocol: 'https://'
}
# default host for controllers
config.action_controller.default_url_options = {
:host => "www.example.com"
}
Run Code Online (Sandbox Code Playgroud)
Mr_*_*zle 12
在您的路线集中:
root :to => 'welcome#index'
Run Code Online (Sandbox Code Playgroud)
并在您的链接集:
<%=link_to "Home", root_path %>
Run Code Online (Sandbox Code Playgroud)
它会呈现
<a href="/">Home</a>
Run Code Online (Sandbox Code Playgroud)
所以在你的localhost它会带你去
http://localhost:3000/
并在您的生产服务器它带你去
http://yourdomian.com/
并且默认情况下routes.rb将呈现index控制器的操作welcome.
PS.您还需要index.html从public目录中删除才能使用它.
UPDATE
关于路由的更多信息: