Маршруты Omniauth Custom rails

Как я могу сопоставить это действие

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

который вызывается через

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

на путь типа login_path или для работы с subURI?

Я пытался: "sessions#create", as: "login", но эта ошибка не соответствует маршрутам для session#create. Заранее спасибо!


person dodgerogers747    schedule 11.10.2012    source источник
comment
мое приложение развернуто на www.domain.com/rails_app, который является subURI домена   -  person dodgerogers747    schedule 11.10.2012


Ответы (2)


Я полагаю, вы немного запутались.

Этот маршрут, о котором вы говорите, представляет собой обратный вызов, на который возвращается пользователь после связи 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

хотя особых причин для этого я не вижу.

person Agis    schedule 11.10.2012
comment
Привет, Агис, извините за поздние ответы, совпадение/логин с перенаправлением кажется идеальным. моя проблема заключалась в том, что мое приложение посещало domain.com/auth/facebook, а не domain.com/app/auth/facebook. я не возражаю против того, что пользователь видит с этой точки зрения, но пытался жестко закодировать это, чтобы пути оставались согласованными в разных средах. Благодарность! - person dodgerogers747; 12.10.2012

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

Приведенный выше код маршрутизации поможет вам, если вы хотите, чтобы /auth/twitter(:provider)/callback заканчивалось вашим действием SessionsController => create.

person balanv    schedule 11.10.2012