Ruby on rails Omniauth自定义轨道路线

Ruby on rails Omniauth自定义轨道路线,ruby-on-rails,ruby,routes,omniauth,Ruby On Rails,Ruby,Routes,Omniauth,我如何绘制这个动作 match '/auth/:provider/callback', to: 'sessions#create' 它通过 <b><%= link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in" %></b> 到类似于login_path的路径,还是使用子URI 我曾尝试将“会话#创建”改为“登录”,但由于没有与会话#创建匹配的路由,因此出现了错误。提前谢谢 我想你

我如何绘制这个动作

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

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

到类似于login_path的路径,还是使用子URI


我曾尝试将“会话#创建”改为“登录”,但由于没有与会话#创建匹配的路由,因此出现了错误。提前谢谢

我想你有点糊涂了

您提到的这条路径是在OmniAuth与第三方服务(如Facebook)通信后,用户返回的回调。因此,使用
:as
选项命名此路线没有意义(尽管您可以)

你想要编辑的(如果我理解你的话)是用户登录时点击的URL,所以它看起来不像,但看起来像

它只是一个静态url(/auth/facebook),因此您可以像这样重定向它:

match”/login“=>重定向(“/auth/github”)

如果用户可见的URL与您无关,但您只想在视图中简化它,如:

您可以在助手中定义此方法(例如ApplicationHelper.rb):


尽管我不认为这样做有什么特别的原因。

匹配'/auth/:provider/callback'=>'会话#创建'


如果您希望
/auth/twitter(:provider)/callback
在您的
sessioncontroller
=>
create
action

中结束,则上述路由代码将帮助您。我的应用程序已部署到www.domain.com/rails\u应用程序,该应用程序是domainHi Agis的子URI,很抱歉回复太晚,带有重定向的匹配项“/登录”似乎很完美。我的问题是,我的应用程序正在访问domain.com/auth/facebook,而不是domain.com/app/auth/facebook。我不介意用户从这个角度看到了什么,但我试图对其进行硬编码,以便路径在不同环境中保持一致。谢谢
def login_link
  "/auth/facebook"
end