首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在rails中为url helper设置默认主机?

如何在rails中为url helper设置默认主机?
EN

Stack Overflow用户
提问于 2010-04-18 05:37:13
回答 8查看 74.6K关注 0票数 70

我想做这样的事情

代码语言:javascript
复制
config.default_host = 'www.subdomain.example.com'

在我的一些配置文件中,以便object_url助手(ActionView::Helpers::UrlHelper)生成以http://www.subdomain.example.com开头的链接

我试图搜索文档,但除了ActionMailer文档和http://api.rubyonrails.org/classes/Rails/Configuration.html之外,我没有找到任何对我没有用处的文档,因为我不知道应该在哪个pat中查找。有没有一个地方可以描述Rails::Initializer.config的整个结构?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-03-14 07:10:23

asset_host不适用于urls

您需要在ApplicationController中覆盖default_url_options (至少在Rails3中)

http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options

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

Stack Overflow用户

发布于 2014-01-12 08:20:48

在环境配置中定义默认主机:

代码语言:javascript
复制
# config/environments/staging.rb
MyApp::Application.configure do
  # ...
  Rails.application.routes.default_url_options[:host] = 'preview.mydomain.com'
  # ...
end

然后,您可以在应用程序中的任何位置创建URL:

代码语言:javascript
复制
Rails.application.routes.url_helpers.widgets_url()

或者在类中包含URL帮助器:

代码语言:javascript
复制
class MyLib
  include Rails.application.routes.url_helpers

  def make_a_url
    widgets_url
  end
end

如果您没有定义默认主机,则需要将其作为一个选项进行传递:

代码语言:javascript
复制
widgets_url host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')

指定协议之类的内容也很有用:

代码语言:javascript
复制
widgets_url protocol: 'https'
票数 54
EN

Stack Overflow用户

发布于 2015-02-03 11:58:37

另一种方法是这样设置它

代码语言:javascript
复制
# config/production.rb
config.action_controller.default_url_options = { host: 'myproduction.com' }
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2660172

复制
相关文章

相似问题

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