2012-03-23 9 views
7

request.env['http_host']はlocalhostで動作していましたが、herokuのレイアウトページで参照するとエラーが発生します。Rails - レイアウトでドメインURLを見つける方法

このリクエストはビューで動作し、正しいベース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): 
+0

A pこれを回避するための一般的な方法は、dev vs prodのグローバル設定を設定することです。 –

答えて

15

あなたはポートなしでホストをしたい場合は、単に使用:

request.host 

編集:おっと、私はちょうどあなたが使用していることに気付きましたビュー内のコードそこに表示されているかどうかは分かりませんが、コントローラでのみ使用しましたが、インスタンス変数を設定することでこれを解決するのは簡単です。コントローラーで

+2

'request'も表示されていなければなりません。 – tadman

5
  1. 、ホストに等しい変数のインスタンスを設定: ビューで
    • @host = request.host
    • <%= @host %>
を使用してインスタンス変数を参照
関連する問題