Ruby on rails 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

我试图构建一个单页应用程序,但在Rails路由方面遇到了问题。基本上,我希望管理路由中的所有内容都指向管理控制器索引,但json rails指向特定资源。我试过了

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”}。。。