2011-12-28 100 views
6

我得到这个错误,当我使用omniauth,设计与导轨3.1.3.I已安装omniauth宝石& omniauth Facebook。没有路线匹配[GET]“/ auth/facebook”

配置routes.rb中为match '/auth/:provider/callback',to: 'authentications#create'鲽指导https://github.com/intridea/omniauth

每当我浏览网址http://localhost:3003/auth/facebook/,我发现路由错误

**No route matches [GET] "/auth/facebook"** 

请this.I帮助有相关帖子在stackoverflow中,似乎没有工作

回答

8

当使用Rails 3.2,OmniAuth 1.0.2和Devise 2.0时,我有同样的问题。

显然有一个'path_prefix'的问题。但是,当手动重新配置一切正常。

尝试在你的初始化做到这一点:

Rails.application.config.middleware.use OmniAuth::Builder do 
    configure do |config| 
    config.path_prefix = '/auth' 
    end 
    ... 
end 
+2

没有这种改变,我注意到在/ auth(如/ users/auth/facebook)之前添加/ users会起作用。使用相同的宝石版本,看到同样的问题。 – TuteC 2012-03-06 20:25:45

+0

Devise不允许更改config.path_prefix的全局值,但可以在每个提供程序中设置':path_prefix =>'/ auth''。 – link0ff 2014-02-25 16:42:04

1

后几个小时试图解决这个问题,我意识到,我在.gitignore文件倒是config/initializers/omniauth.rb(可耻的是我)。 omn​​iauthable色器件模块:

所以从列表的.gitignore如果您尚未

3

我有同样的问题,并发现它是由引起删除omniauth.rb。例如:您需要将该模块注释掉,例如:

#app/model/user.rb 
def User 
    ... 
    devise :database_authenticatable, :registerable, :confirmable, 
      :recoverable, :rememberable, :trackable, :validatable#, :omniauthable 
    ... 
end 

对于迟到的回复,抱歉。

0

这很可能是因为您已将devise.rb配置为使用scoped_views。 Devise的默认行为是在您的模型上确定URL的范围。解决这个问题的最佳方式是使用您自己的控制器,继承Devise的设计,并告诉Devise使用哪些控制器和URL。有关如何实现该行为的更详细说明,请参阅Devise wiki pages

0

这个问题是由于主机冲突,我们需要确保,我们正在改变Facebook的“网站与Facebook登录” - >网站的URL:“”根据生产和本地开发。 enter image description here