0

我怎么能映射这个动作

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”,如:“login”,但是这个错误没有与会话#create 匹配。提前致谢!

4

2 回答 2

1

我相信你有点糊涂了。

您所说的这条路由是用户OmniAuth 与 3rd-party 服务(例如 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 回答
1

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

如果您/auth/twitter(:provider)/callback希望在您的SessionsController=>create操作中结束,上面的路由代码将为您提供帮助

于 2012-10-11T16:37:36.780 回答