2015-04-23 97 views
0

我從我的一個模型中生成圖像標記,我無法讓Rails同時在開發和生產模式下創建工作URL。我開始了這在我的車型之一:路由錯誤:沒有路由匹配[GET] /image/my_image.png

def traffic_light_icon(size=15) 
    image_tag "/assets/#{size}/#{traffic_colour}.png" 
end 

(我越來越進入IMAGE_TAG與include ActionView::Helpers::AssetTagHelper

這個工作在發展很好,但在生產中,該鏈接不自動更新用適當的哈希值從資產管道中獲取圖像。如果我嘗試使用形式

image_tag "#{size}/#{traffic_colour}.png" 

代替(如各種來源的建議),那麼它甚至不開發工作 - 我得到一個路由錯誤(沒有路由匹配[GET] /圖片/ 15/amber.png)。

我在做什麼錯?

回答

2

基本上,答案是不要在模型裏面使用image_tag,即使你弄清楚一個黑客可以訪問它。爲了生成適當的上下文敏感的URL,助手需要訪問模型內​​不可用的會話數據。這導致Rails創建一個圖像標籤,但很糟糕的是,它不適用於所有情況(在我的情況下,在開發中,而不是在生產中)。

關於何時以及如何在Railscast 132模型和控制器內使用助手(有幾處提示何時不注意或什麼時候注意它引起的問題)有很好的信息。

+0

此外,您可以通過此view_context.asset_path(「nameoffile.extention」)'獲取模型和控制器內的資產。 –

相關問題