Ruby on rails Rails路由格式
我试图构建一个单页应用程序,但在Rails路由方面遇到了问题。基本上,我希望管理路由中的所有内容都指向管理控制器索引,但json rails指向特定资源。我试过了Ruby on rails Rails路由格式,ruby-on-rails,resources,format,routes,Ruby On Rails,Resources,Format,Routes,我试图构建一个单页应用程序,但在Rails路由方面遇到了问题。基本上,我希望管理路由中的所有内容都指向管理控制器索引,但json rails指向特定资源。我试过了 namespace :admin do constraints :format => 'html' do match '*path' => 'admin#index' end constraints :format => 'json' do resources :user, :ite
namespace :admin do
constraints :format => 'html' do
match '*path' => 'admin#index'
end
constraints :format => 'json' do
resources :user, :items
end
end
在本例中,路径将与greedily和match/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_的控制器中
更新2
嗯,我现在无法正常工作。当我转到/admin/users时,我遇到了一个不可接受的错误。在这里,我认为第一条规则与第二条规则不匹配。如果您将json块向上移动,并使每个json资源的格式段都是必需的,那么它会起作用吗?在Rails 3.2中,这是通过将格式选项设置为真来实现的:
namespace :admin do
constraints(format: "json") do
resources :items, format: true
resources :users, format: true
end
constraints(format: "html") do
match "*path" => "admin#index"
end
end
不确定为什么这不起作用,但您可能希望尝试创建自己的约束类,并自己检查请求格式…rails版本$rake路由结果?/admin/*路径(:格式)admin/admin#索引{:格式=>“html”}admin#U用户获取/admin/users(:格式)admin/users#索引{:格式=>“json”}。。。