首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何设置root_url

如何设置root_url
EN

Stack Overflow用户
提问于 2011-12-15 23:52:14
回答 2查看 39.3K关注 0票数 25

在我的Ruby on Rails 3.1应用程序中,我有一个这样的链接:

代码语言:javascript
复制
<%= link_to 'Home', root_url %>

在我的开发部。它会呈现一个带有"localhost:3000“的链接。在生产环境中,它会呈现一个IP地址为"83.112.12.27:8080“的链接。我想强制rails呈现域地址,而不是IP地址。如何设置root_url?

EN

回答 2

Stack Overflow用户

发布于 2011-12-16 00:06:39

您正在寻找ActionController's default url option。所以你可以这样做:

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  def default_url_options
    if Rails.env.production?
      {:host => "www.example.com"}
    else  
      {}
    end
  end
end

这也适用于ActionMailer。也可以在您的环境.rb或application.rb中设置这两种设置

代码语言:javascript
复制
# 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"
}
票数 43
EN

Stack Overflow用户

发布于 2011-12-15 23:57:28

也许你可以在你的ApplicationController中做这样的事情:

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  helper_method :home_uri

  def home_uri
    Rails.env.production? ? 'http://www.yourdomain.com' : root_url
  end
  ...
end

然后把你的链接改成这样:<%= link_to 'Home', home_uri %>

这将创建一个帮助器方法home_uri,如果应用程序在开发环境中运行,该方法将返回所需的url。我不认为你可以很容易地覆盖root_url,我也认为这可能是一个坏主意。我让帮助器方法以uri而不是url结尾,因为rails使用路由器自动创建以url结尾的方法,所以如果您有一个名为home的路由,此解决方案不会覆盖或与该命名路由帮助器方法冲突。You can read more about named route helper methods here if you're interested.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8522813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档