2012-09-02 37 views
1

我正在尝试构建一个页面应用程序,并且遇到了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 如果我移动:格式=>“JSON”块了。它匹配/管理员/用户

看起来像我指定的约束块根本不起作用。

的Rails 3.2.6以上版本 耙路线

admin用户的管理和项目
/admin/*path(.:format)      admin/admin#index {:format=>"html"} 
admin_users GET /admin/users(.:format)  admin/users#index {:format=>"json"} 

/*其他正常途径的资源*/

我已经确认并没有路由/管理/用户( .format)admin/users#index {:format =>“html”}

因此看起来就像我认为的那样。但不知何故仍然没有工作

更新: 我设法如果移动JSON块了 但是如果HTML块顶部得到它运作。它仍然导致我的问题。但我认为现在对我来说已经够好了。谢谢你们

原来的问题是我使用request.xhr?在我应该使用的respond_to

更新控制器2 严正不是实际上可以现在的工作,当我去/管理/用户我得到一个不可接受的错误。在哪里我会认为第一条规则不符合第二条规则。

+0

不知道为什么,这并不工作,但你可能想尝试创建自己的限制类,并检查请求的格式自己... – Robin

+0

导轨版本? $ rake路由结果? –

+0

rails version 3.2.6 – user602614

回答

2

如果您将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 
+0

This Works,Thanks Jari – user602614