0

ユーザーのサインアップを管理し、omniauth でログインしようとしています。また、ユーザーがプロバイダーで承認された後、ユーザーに関するより多くの情報を収集したいと思います。現時点でVendor#from_omniauthは、既存のベンダーまたは認証ハッシュが既に入力された新しいベンダー レコードのいずれかを返します。新しいレコードをベンダー コントローラーに渡して、フォームで簡単に使用できるようにすることはできますか?

Rails4を使用しています。

class SessionsController < ApplicationController
  def create
    vendor = Vendor.from_omniauth(env["omniauth.auth"])
    if vendor.new_record?
      redirect_to new_vendor_url(vendor)
    else
      session[:vendor_id] = vendor.id
      redirect_to root_url, notice: "Signed in!"
    end
  end
end
4

3 に答える 3

0

この問題は、に変更new_vendor_url(vendor)することで解決されましたnew_vendor_url(vendor: vendor.attributes)

于 2013-09-05T02:36:07.870 に答える
0

vendor.idを引数として に渡し、new_vendor_urlレンダリングされたアクションでルックアップを実行します。

# app/controllers/sessions_controller.rb
redirect_to new_vendor_url(:vendor_id => vendor.id)

# app/controllers/vendors_controller.rb
def new
  vendor_from_session = Vendor.find(params[:vendor_id])
  # code here
  @vendor = Vendor.new
end
于 2013-09-05T05:01:15.673 に答える