2012-05-30 12 views
5

ログイン処理にDeviseとOmniauthを使用しています。何らかの理由で、「users/auth/facebook」または「users/auth/twitter」のルートにアクセスできます。しかし、私はレーキルートを実行すると表示されないので、これらのパスを取得するためのヘルパーメソッド(例:something_something_path)は何もわかりません。誰かが私を助けることができますか?ルートは表示されませんが、ハードコードされている場合は存在します

私は私のすべてのルートを表示することはできませんが、私は現れています「/ユーザー/ AUTH/...」と一致する唯一のルートは(すくいルートから)この1であると言うことができます:

user_omniauth_callback  /users/auth/:action/callback(.:format) {:action=>/(?!)/, :controller=>"users/omniauth_callbacks"} 

ところで、私は「ちょうど良いルートにアクセスすることができます」と言うとき、私は(FacebookやTwitterに正しく私をリダイレクト)この作品意味:

<%= link_to "Connect", "users/auth/facebook" %> 

また、ルートはデフォルトでomniauthルートを考案する必要がありますユーザーモデルの場合

答えて

4

:あなたは工夫の実装を見てみた場合

<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %> 

また、あなたはURLヘルパーがあることがわかりますrake routesに表示されます。まずタスクの実装方法をメモします。それはrailtiesの一部であり、それはas suchを表示するためにルートを取得します。

Rails.application.routes.routes 

だから我々はそれがそのルートのRails.applicationを求めていることがわかります。


Omniauth gemは「ラックミドルウェアを利用してフレキシブル認証システムである」と次のノート。

rake routesで使用されているRails.applicationについては、Rackミドルウェアを使用しているため「何も知らない」ため、そのルートはそのタスクには表示されません。

ラックミドルウェアについては、this Railcastでご紹介します。


我々はOmniAuth::Builderは、スタック内のあなたのレールのアプリの前に表示されていることをrake middlewareから見ることができます少し深く掘り下げます。では、auth/twitterルートはどのように処理されますか?

それはとてもそのcallrequest_pathをチェックすることによって、あなたがチェックhereを見ることができない、とあなたはrequest_pathherepath_prefixはデフォルトでauthで、あなたのケースでnametwitterで構築されているかを見ることができます。

考案でOmniauthを用い hereに述べたように、 path_prefixは、自動的に設定さ

+1

優秀な答え、そして素晴らしいヘアカット! ;) – asymmetric

0

なぜレイクルートに登場しないのですか、わかりません。あなたは自分のエイリアスを知りたい場合しかし、あなたはここでそれらを見つけることができます:彼らのドキュメントからhttps://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview

を:

を現在、考案だけあなたが1つのモデルomniauthableを行うことができます。 ユーザーomniauthableという名前のモデルを作成した後にしている場合

user_omniauth_authorize_path(プロバイダ) user_omniauth_callback_path(プロバイダ)

:「 devise_for:ユーザーが」すでに設定/ routes.rbをに加えて、工夫が 次のURLメソッドを作成します。

あなたのルートにdevise_for :modelがある場合は、そのurlメソッドが表示されます。

例:なぜこのdoesnのに関しては

https://github.com/plataformatec/devise/blob/master/lib/devise/omniauth/url_helpers.rb

+0

はい..これを試みたが、残念ながら、それはどちらか動作しません。未定義方法エラー。:( – varatis

+0

た版オムニバスの使命は? 1.0? –

+0

ええ、私は1.0を使用しています – varatis

関連する問題