Rails - 如何在布局中找到域url

时间:2012-03-23 17:48:51

标签: ruby-on-rails ruby ruby-on-rails-3

我有request.env['http_host']在localhost上工作,但在heroku的布局页面中引用时会导致错误。

此请求在视图中工作并显示正确的基本URL,但在将代码移动到布局时会导致错误。注意 - 我正在使用它为html电子邮件中的图像构建绝对URL。

  <%= "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %> 
  <%= image_tag "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %>

收到错误:

ActionView::Template::Error (undefined method `env' for nil:NilClass):

2 个答案:

答案 0 :(得分:15)

如果您想要没有端口的主机,请使用:

request.host

编辑:哎呀,我刚刚注意到你在视图中使用了代码。我不知道它是否在那里可见,我只在控制器中使用它,但通过设置实例变量可以很容易地克服它。

答案 1 :(得分:5)

  1. 在您的控制器中,将实例变量设置为等于主机:
    • @host = request.host
  2. 在您的视图中,使用引用实例变量
    • <%= @host %>