Ruby on rails 路由错误:没有与[GET]/image/my_image.png]匹配的路由

Ruby on rails 路由错误:没有与[GET]/image/my_image.png]匹配的路由,ruby-on-rails,ruby,ruby-on-rails-4,activeview,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_标记) 这在开发过程中效果很好,但在生产过程中,链接并没有自动更新为适当的散列以从资产管道中

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

def traffic_light_icon(size=15)
  image_tag "/assets/#{size}/#{traffic_colour}.png"
end
(我正在使用
include ActionView::Helpers::AssetTagHelper
访问image_标记)

这在开发过程中效果很好,但在生产过程中,链接并没有自动更新为适当的散列以从资产管道中获取图像。如果我尝试使用表单

image_tag "#{size}/#{traffic_colour}.png"
相反(正如各种来源所建议的那样),它甚至在开发中都不起作用——我得到了一个路由错误(没有与[get]/image/15/amber.png]匹配的路由)


我做错了什么?

基本上,答案是不要在模型内部使用image\u标签,即使你找到了访问它的方法。为了生成正确的上下文相关URL,帮助器需要访问模型中不可用的会话数据。这导致Rails创建了一个图像标签,但糟糕的是,它不能在所有情况下工作(在我的例子中,是在开发中,而不是在生产中)


关于何时以及如何在中使用模型和控制器内的帮助程序,有很好的信息(并提供一些提示,说明何时不使用,或何时查找它引起的问题)。

此外,您可以通过此
查看上下文.asset\u路径(“nameoffile.extension”)
获取模型和控制器内的资源。。