0

このアクションをどのようにマッピングできますか

match '/auth/:provider/callback', to: 'sessions#create'

経由で呼び出されます

<b><%= link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in" %></b>

login_path のようなパスまたはサブ URI を操作するには?

「sessions#create」を「login」として試みましたが、sessions#create に一致するルートがないため、これはエラーになります。前もって感謝します!

4

2 に答える 2

1

match '/auth/:provider/callback' => 'sessions#create'

上記のルーティング コードは、 =>アクション/auth/twitter(:provider)/callbackで終了したい場合に役立ちます。SessionsControllercreate

于 2012-10-11T16:37:36.780 に答える
1

少し混乱したと思います。

あなたが話しているこのルートは、OmniAuth がサードパーティ サービス (Facebook など) と通信した後にユーザーが返されるコールバックです。したがって、:asオプションを使用してこのルートに名前を付ける意味はありません (ただし、可能ですが)。

あなたが編集したいのは(私があなたを理解している場合)、ユーザーがログインするためにヒットするURLであるため、http://example.com/auth/facebookのようには見えませんが、http://example.com/loginように見えます.

これは単なる静的 URL (/auth/facebook) であるため、次のようにリダイレクトできます。

match "/login" => redirect("/auth/github")

ユーザーに表示される URL は関係ないが、ビュー内で次のように単純化したい場合:

<b><%= link_to "Sign in with Facebook", sign_in, id: "sign_in" %></b>

このメソッドをヘルパーで定義できます (たとえば、ApplicationHelper.rb):

def login_link
  "/auth/facebook"
end

これを行う特別な理由はありませんが。

于 2012-10-11T16:19:32.350 に答える