2

私は omniauth-identity を使用しており、その「登録失敗」を構成しています。

私のファイル:

config/initializers/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

登録に失敗した場合 (間違ったメールを渡す)、次のメッセージが表示されます。

ブラウザで:

ルーティング エラー

一致するルートがありません {} 使用可能なルートの詳細については、rake ルートを実行してみてください。

サーバーログ:

2012-07-16 17:35:48 +0300 (0.1ms) で 127.0.0.1 の POST "/auth/identity/register" を開始しました トランザクション ID が存在します (0.2ms) SELECT 1 AS one FROM "identities" WHERE "identities" "."email" = 'foo' LIMIT 1 (0.1ms) ロールバック トランザクション IdentitiesController#new による処理 HTML パラメータ: {"utf8"=>"✓", "authenticity_token"=>"HIDDEN :)>=", " name"=>"", "email"=>"foo", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "commit"=>"Register"}
レンダリングされたアイデンティティ/レイアウト/アプリケーション内の new.html.erb (11.2ms) 44ms で 500 内部サーバー エラーを完了

ActionController::RoutingError ({} に一致するルートはありません):
app/views/layouts/application.html.erb:35:in _app_views_layouts_application_html_erb___1224394470845933684_70120630781720' config/initializers/omniauth.rb:8:incall'
config/initializers/omniauth.rb:8:in `block (2 levels) in '

/Users/ayia/.rvm/gems/ruby-1.9.3-p125@global/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/routing_error.erb をレスキュー/レイアウト内でレンダリング (0.6ms)

この理由は何ですか?私は何を間違えたのですか?

更新 私が理解していないのは - なぜ私は得るのStarted POST "/auth/identity/register"ですか? omn​​iauth の設定によると、IdentitiesController.action(:new) に対応するビュー、つまり /identities/new ... を取得する必要があります。

4

1 に答える 1

0

この問題は、omniauth-identiry の 1.1.0 バージョンでは再現できません。そのため、最新バージョンに更新すると問題が修正されました。

于 2012-10-20T10:50:03.163 に答える