路由错误:没有路由匹配[GET] /image/my_image.png

时间:2015-04-23 13:30:37

标签: ruby-on-rails ruby ruby-on-rails-4 activeview

我正在我的一个模型中生成图像标记,而我无法让Rails同时在开发和生产模式下创建工作URL。我在我的一个模型中开始使用它:

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

(我可以通过include ActionView::Helpers::AssetTagHelper访问image_tag。)

这在开发中运行良好,但在生产中,链接不会使用适当的哈希自动更新,以从资产管道中获取图像。如果我尝试使用表格

image_tag "#{size}/#{traffic_colour}.png"
而不是(正如各种消息来源所建议的那样),它甚至不能在开发中工作 - 我得到一个路由错误(没有路由匹配[GET] /image/15/amber.png)。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

基本上,答案是不要在模型中使用image_tag,即使你想出一个黑客来获取它。为了生成适当的上下文相关URL,帮助程序需要访问模型中不可用的会话数据。这导致Rails创建了一个图像标记,但很糟糕的是,它在所有情况下都不会起作用(在我的情况下,在开发中但不在生产中)。

Railscast 132中有关于何时以及如何在模型和控制器中使用帮助程序的良好信息(有一些提示,关于何时不关注,或何时查找它导致的问题)。

相关问题