如何在Rails中设置路由的默认格式?

时间:2014-01-09 10:03:07

标签: ruby-on-rails ruby rails-routing

有以下路由代码:

  resources :orders, only: [:create], defaults: { format: 'json' }
  resources :users,  only: [:create, :update], defaults: { format: 'json' } 
  resources :delivery_types, only: [:index], defaults: { format: 'json' }
  resources :time_corrections, only: [:index], defaults: { format: 'json' }

可以使用1个字符串为所有资源设置默认格式,每行不带“defaults”哈希值?谢谢。

3 个答案:

答案 0 :(得分:6)

尝试这样的事情:

scope format: true, defaults: { format: 'json' } do
  resources :orders, only: [:create]
  resources :users,  only: [:create, :update] 
  resources :delivery_types, only: [:index]
  resources :time_corrections, only: [:index]
end

答案 1 :(得分:2)

我宁愿为application_controller添加方法。并在我想要的过滤器之前使用它。

class ApplicationController < ActionController::Base
...
private 
...
  def set_default_format
    params[:format] ||= "json"
  end
end

class UsersController < ApplicationController
  before_filter :set_default_format, only: [:create]
  ...
end

在这种情况下,默认格式对新开发人员来说并不意外,因为routes.rb通常很大且很麻烦

答案 2 :(得分:0)

对我有用:

  scope defaults: { format: 'json' } do
    resources :users, only: [:index]
  end