Ruby on rails 我可以命名Omniauth身份验证路由吗?
我已经将Omniauth添加到我的rails 3.1项目中,一切正常。当我访问Ruby on rails 我可以命名Omniauth身份验证路由吗?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,omniauth,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Omniauth,我已经将Omniauth添加到我的rails 3.1项目中,一切正常。当我访问hostname/auth/facebook时,我会被带到一个页面,在那里我可以像您所期望的那样授权访问我的facebook帐户 我想知道是否可以命名该路线,以便在我的链接到助手中编写 <%= link_to 'Login with Facebook', facebook_login_path %> 而不是 <%= link_to 'Login with Facebook', '/auth/fa
hostname/auth/facebook
时,我会被带到一个页面,在那里我可以像您所期望的那样授权访问我的facebook帐户
我想知道是否可以命名该路线,以便在我的链接到助手中编写
<%= link_to 'Login with Facebook', facebook_login_path %>
而不是
<%= link_to 'Login with Facebook', '/auth/facebook' %>
我知道这不是一件大事,但我喜欢它的一致性。通常您会这样做:在routes.rb文件中:
get "auth/facebook", :to => "controller#action", :as => "facebook_login"
但在本例中,发送到的url实际上不是应用程序的url部分,而是Facebook的oauth url。因此,您无法为其创建路由
你唯一能做的事情——就像上面的评论指出的那样——是在你的一个助手文件中创建一个助手方法——比如app/helpers/application_helper.rb
def facebook_login_path
"/auth/facebook"
end
你试过了吗?:match'/auth/facebook'
=>'/auth/facebook',:as=>facebook\u loginYeah我试过了,但失败了,因为它认为我匹配的是“/auth”控制器,控制器不能以斜杠开头。如果没有斜杠,它将失败,因为没有身份验证控制器!是的,这是因为Rails需要在内部使用route.rb
文件(它只是将传入的http请求转换为REST样式(应该有控制器和操作来处理)。在OAuth/OpenID情况下,您向外部服务发送请求,所以您可以做的任何事情都是在application\u helper
文件中创建helper方法(def facebook\u login\u path)/auth/facebook;end)