私のRails 3アプリには、私のDevise + OmniAuth統合のための3つのカスタマイズされたコントローラがあります。私はユーザー登録とセッションのために、 'new'のような標準的なメソッドをオーバーライドする必要がありました。 JSONフォーマットと互換性のあるリダイレクトとレスポンスを処理するコントローラメソッドが特に必要でした。Rails 3のカスタマイズされたDeviseコントローラのJSONなどのデフォルトの形式を設定するにはどうすればよいですか?
devise_for :users, :controllers => {
:omniauth_callbacks => "users/omniauth_callbacks",
:registrations => "users/registrations",
:sessions => "users/sessions"
}
期待通りに動作します:私は、次のしている私のroutes.rbをファイルに
。私はこのようなものだろうリソースのデフォルトフォーマットを設定するには
new_user_session GET /users/sign_in(.:format) {
:action =>"new",
:controller =>"users/sessions"
}
new_user_registration GET /users/sign_up(.:format) {
:action=>"new",
:controller=>"users/registrations"
}
::私のルートは今のようなカスタムコントローラのルートを示しそう
resources :users, :defaults => {
:format => 'json'
}
を、私はこれを試してみました:
namespace "users" do
resources :registrations, :defaults => {
:format => 'json' }
resources :sessions, :defaults => {
:format => 'json' }
end
期待どおりに動作しませんでした。これが考案で私のカスタム上書きで動作するためには
new_users_registration GET /users/registrations/new(.:format) {
:format=>"json",
:action=>"new",
:controller=>"users/registrations"
}
new_users_session GET /users/sessions/new(.:format) {
:format=>"json",
:action=>"new",
:controller=>"users/sessions"
}
、私は「new_user_registration」ない「new_users_registration」をフォーマットする必要があります:私はこれらのルートになってしまいました。
私は 'devise_for'メソッドをチェックしましたが、:defaultsオプションはありません。私は 'devise_scope'メソッドを使って個々のルートを設定することができますが、これは:defaultsイディオムよりははるかに簡潔です。
これを実現するために使用できるルーティングマジックを知っている人はいますか?