Ruby on rails 将具有特定格式的请求路由到Rails中的其他控制器

Ruby on rails 将具有特定格式的请求路由到Rails中的其他控制器,ruby-on-rails,routing,Ruby On Rails,Routing,我有一个路由,它将请求路由到somepath/:id(:format)到somecontroller\show 这适用于任何格式的每个请求。但是,我有一个条件,somepath/:id.png应该返回一个图像,并且该图像的代码已经在othercontroller\show中实现 我认为最好将.png请求路由到othercontroller,而不是复制代码 实现这一目标的方法是什么? 我考虑过使用约束,但我不确定这是否是正确的方法。我认为唯一的方法是使用约束 match 'somepath/:id

我有一个路由,它将请求路由到
somepath/:id(:format)
somecontroller\show

这适用于任何格式的每个请求。但是,我有一个条件,
somepath/:id.png
应该返回一个图像,并且该图像的代码已经在
othercontroller\show
中实现

我认为最好将.png请求路由到
othercontroller
,而不是复制代码

实现这一目标的方法是什么?

我考虑过使用约束,但我不确定这是否是正确的方法。

我认为唯一的方法是使用约束

match 'somepath/:id.png' => 'othercontroller#show'
match 'somepath/:id(.format)' => 'somecontroller#show
这会将所有.png请求路由到其他控制器,并将所有其他请求路由到somecontroller


确保将png路径放在另一条路径之前

这非常有效,只需添加
:format=>:png
。唯一的缺陷是它没有强制使用这种格式,所以我实际上可以访问
somepath/id.png.json