我正在使用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 ...
具有相同的問題。你弄明白了嗎?請注意,由於表單提交,您收到了該網址的信息。 omniauth進程稍後。在我的情況下,我鏈接到「身份#新」,然後填寫表格進行註冊。 – agmcleod 2012-10-13 21:15:00
不幸的是,我還沒有想出它......迄今爲止計劃使用Ajax進行表單驗證......如果您找到解決方案,請分享:-) – yashaka 2012-10-14 04:36:38
我們有一個非常愚蠢的問題造成它。在該動作中呈現的佈局中,link_to在參數之間缺少逗號。導致這種情況很奇怪。 – agmcleod 2012-10-14 12:15:25