【问题标题】:Rails routing formatRails 路由格式
【发布时间】: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


【解决方案1】:

如果将 json 块向上移动并为每个 json 资源强制设置格式段是否有效?在 Rails 3.2 中,通过将 format 选项设置为 true 来实现:

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

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多