ruby-on-rails - rails 布线格式

标签 ruby-on-rails resources format routes

我正在尝试构建一个单页应用程序,但在 Rails 路由方面遇到了问题。基本上我想要管理路由中的所有内容到管理 Controller 索引,但 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' block 向上移动。它匹配/admin/users

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

Rails 版本 3.2.6 rake 路线

/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 block 向上移动,我已经设法使其正常工作 但是如果 html block 位于顶部。它仍然给我带来问题。但我认为现在对我来说已经足够好了。谢谢大家

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

更新2 嗯,当我转到/admin/users 时,现在实际上没有工作,我收到了一个 Not Acceptable 错误。我认为第一条规则不会匹配并匹配第二条规则。

最佳答案

如果将 json block 向上移动并使每个 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

关于ruby-on-rails - rails 布线格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233101/

相关文章:

vb.net - 在VB.NET中将字符串转换为十进制

ruby-on-rails - 在 linux 上安装 mysql2 gem

WPF:在运行时从 App.xaml 更改资源(颜色)

JAVA:System.out.format 的多种格式

c++ - 如何从 C++ 代码访问 .qrc 文件中指定的文件?

wpf - 从 DataTemplate 内的资源绑定(bind)

javascript - 在 Javascript 中设置日期格式

ruby-on-rails - 什么测试工具/框架可以测试 Rails 应用程序中的并发请求?

javascript - 如何实现url中带有问号的Angular js网站

ruby-on-rails - Rails send_file 不播放 mp4