【发布时间】:2012-12-06 23:01:21
【问题描述】:
我正在编写一个应用程序,我希望所有对 HTML 的请求都由同一个控制器操作处理。我还有一些其他特定于 JSON 的路由。这是我的路线的样子:
Blog::Application.routes.draw do
constraints format: :json do
resources :posts
end
match "(*path)" => "web#index"
end
问题在于constraints 被解释为“此路由仅适用于指定格式”,而不是“如果请求不是指定格式,则跳过此路由并尝试下一个路由。”
换句话说,在浏览器中导航到 /posts 会给我一个 406 Not Acceptable,因为 URL 被限制为 JSON 格式。相反,如果请求是针对 HTML 的,我希望它通过 web#index,如果请求是针对 JSON,则点击资源丰富的路由。如何实现?
(使用 Rails 3.2.9。)
【问题讨论】: