2011-12-28 95 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