2012-07-16 130 views
2

我正在使用omniauth-identity並配置其「註冊失敗」。當omniauth註冊失敗時,「路由錯誤無路由匹配{}」

我的文件:

配置/初始化/ omniauth.rb

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    #... 
    provider :identity, on_failed_registration: lambda { |env| 
    IdentitiesController.action(:new).call(env) 
    } 
end 

的config/routes.rb中

Wie::Application.routes.draw do 
    root to: 'categories#index' 

    ActiveAdmin.routes(self) 
    devise_for :admin_users, ActiveAdmin::Devise.config 

    match 'auth/:provider/callback', to: 'sessions#create' 
    match 'auth/failure', to: 'sessions#failure' 
    match 'signout', to: 'sessions#destroy', as: 'signout' 
    resources :identities#, only: [:new] 
    resources :categories, path: '', only: [:index] do 
    resources :entries, path: '', only: [:index, :show] 
    end 
end 

應用程序/控制器/ identities_controller.rb

class IdentitiesController < ApplicationController 
    def new 
    ariane.add "New Account" 

    @identity = env['omniauth.identity'] 
    end 
end 

當我有沒有註冊成功(通過不正確的郵件),我得到如下:

路由錯誤

沒有路由匹配{}嘗試運行耙路線更多:

在瀏覽器

有關 可用路線的信息。

在服務器日誌

開始POST 「/認證/身份/註冊」 在2012-07-16 17時35分48秒+0300(0.1毫秒)爲127.0.0.1開始交易身份存在(0.2ms) SELECT 1 AS FROM「身份」WHERE「身份」。「email」='foo' 限制1(0.1ms)回退事務處理 IdentitiesController#new as HTML參數:{「utf8」 =>「✓」, 「authenticity_token」=>「HIDDEN:)> =」, 「name」=>「」,「email」=>「foo」,「password」=>「[FILTERED]」, 「password_confirmation」=> 「[FILTERED]」, 「提交」=> 「註冊」}
渲染身份/佈局內new.html.erb /應用(11.2ms) 完成500內部服務器錯誤在44ms

的ActionController :: RoutingError(沒有路由匹配{}):
應用/視圖/佈局/ application.html.erb:35:在 _app_views_layouts_application_html_erb___1224394470845933684_70120630781720' config/initializers/omniauth.rb:8:in呼叫」
配置/初始化/ omniauth.rb:8:`塊( 2等級)in'

Rendered /Users/ayia/.rvm/gems/[email protected]/gems/actionpack-3.2.6/lib/action_dispatch/middleware/模板/救援/ routing_error.erb內救援/佈局(0.6ms)

這可能是什麼原因?我錯了什麼?

UPDATE 我不明白的是 - 爲什麼我得到Started POST "/auth/identity/register"?根據omniauth配置,我應該獲得與IdentitiesController.action(:new)相對應的視圖,即/ identities/new ...

+0

具有相同的問題。你弄明白了嗎?請注意,由於表單提交,您收到了該網址的信息。 omn​​iauth進程稍後。在我的情況下,我鏈接到「身份#新」,然後填寫表格進行註冊。 – agmcleod 2012-10-13 21:15:00

+0

不幸的是,我還沒有想出它......迄今爲止計劃使用Ajax進行表單驗證......如果您找到解決方案,請分享:-) – yashaka 2012-10-14 04:36:38

+0

我們有一個非常愚蠢的問題造成它。在該動作中呈現的佈局中,link_to在參數之間缺少逗號。導致這種情況很奇怪。 – agmcleod 2012-10-14 12:15:25

回答

0

該問題無法在1.1.0版本的omniauth-identiry上重現。所以更新到最新版本修復了這個問題。

相關問題