【发布时间】:2012-09-02 02:59:26
【问题描述】:
我正在尝试构建一个单页应用程序,但遇到了 Rails 路由问题。基本上我希望管理路由中的所有内容都到管理控制器索引,但 json rails 到特定资源。我试过了
namespace :admin do
constraints :format => 'html' do
match '*path' => 'admin#index'
end
constraints :format => 'json' do
resources :user, :items
end
end
在这种情况下,路径将贪婪匹配并匹配 /admin/users.json 如果我移动 :format => 'json' 块。它匹配 /admin/users
看起来我指定的约束块根本不起作用。
Rails 版本 3.2.6 耙路线
/admin/*path(.:format) admin/admin#index {:format=>"html"}
admin_users GET /admin/users(.:format) admin/users#index {:format=>"json"}
/* 管理员用户和管理员项目的其他正常资源路由 */
我查过了,没有路由 /admin/users(.format) admin/users#index {:format=>"html"}
看来这正是我想的那样。但不知何故仍然不起作用
更新: 如果它向上移动 json 块,我已经设法让它工作 但是,如果 html 块在顶部。它仍然给我带来问题。但我认为现在对我来说已经足够好了。谢谢大家
原来的问题是我用了request.xhr?在我应该使用 respond_to 的控制器中
更新 2 嗯,当我转到 /admin/users 时,我得到了一个不可接受的错误。我认为第一条规则不会匹配并匹配第二条规则的地方。
【问题讨论】:
-
不确定为什么这不起作用,但您可能想尝试创建自己的约束类,并自己检查请求格式...
-
导轨版本? $rake 路线结果?
-
/admin/*path(.:format) admin/admin#index {:format=>"html"} admin_users GET /admin/users(.:format) admin/users#index {:格式=>“json”} ...
标签: ruby-on-rails resources format routes