2

Webサイトでユーザー登録ビューとモデルを作成しようとしていますが、小さな問題があります。

私はdeviseとomniauthを使用して、Facebook接続機能を機能させていますが、Facebookユーザーが初めてサインインしたときにパスワードを作成してほしいのですが、それも機能しています。記入済みのサインアップフォームにリダイレクトします。パスワードを入力するだけです。ただし、パスワードのみを入力できる/views/registrations/new_facebook.html.erbという名前の2番目の「sign_upフォーム」に移動してもらいたいので、他の情報も追加します。

正しいビューを作成してテストしましたが、Deviseのデフォルトをバイパスするための正しいルートを作成する方法がわかりません

match '/facebook' => 'registrations#new', :as => 'new_facebook_user_registration'

問題はマッチにあると思います。それが認識されていないからです。

誰かが私を助けることができれば、それは大きな感謝です、

omn​​iauthのコントローラーコードを追加しました:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def all
user = User.from_omniauth(request.env["omniauth.auth"])
if user.persisted?
      flash[:success] = "Welcome back"
          sign_in_and_redirect user
else
  session["devise.user_attributes"] = user.attributes
  redirect_to new_facebook_user_registration_url
end
end
alias_method :facebook, :all

終わり

redirect_to new_facebook_user_registration_urlを実際に機能させるにはどうすればよいですか?

4

2 に答える 2

1
 devise_scope :user do 
 match "registrations/new_facebook" => "registrations#new_facebook" 
 end

これが、登録コントローラーに new メソッドをコピーして new_facebook という名前のソリューションであり、すべてが期待どおりに機能するようになりました。

于 2012-08-10T14:55:12.170 に答える
0

問題は、そのパスにリダイレクトするdeviseメソッドをオーバーライドしていないことだと思います。また、deviseのドキュメントによると、ルートは「devise_for」呼び出しで設定する必要があります。

これは、あなたが求めていることを実行する方法を説明するwikiページですが、Facebookのサインアップではないケースを処理するには、カスタムロジックが少し必要になる場合があります。

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration

そのページのサンプルコード:

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    '/an/example/path'
  end
end

とルート用のもの:

devise_for :users, :controllers => { :registrations => "registrations" }
于 2012-08-09T11:41:20.713 に答える