2012-03-23 21 views
7

我曾在本地主機上使用request.env['http_host'],但在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和prod設置全局設置。 – 2012-03-23 18:05:36

回答

15

如果你希望在無端口的主機,只需使用:

request.host 

編輯:哎呀,我剛纔注意到您使用視圖中的代碼。我不知道它在那裏是否可見,我只在控制器中使用過它,但通過設置實例變量可以很容易地解決這個問題。

+2

'request'應存在於該視圖爲好,因爲它是在給定的例子。 – tadman 2012-03-23 18:22:05

5
  1. 在控制器中,設置一個實例變量等於主機:
    • @host = request.host
  2. 在視圖中,參考實例變量使用
    • <%= @host %>