セッションにデータを保存し、ユーザーがログインしていると仮定して新しいレコードを作成する2つのステップのフォームがあります。
新しいユーザーがサインアップしていない場合は、次のことができるようにしたいと思います。
- フォーム#1に記入
- フォーム#2に記入
- Deviseサインアップにリダイレクト(
new_registration_path
) - サインアップ/ログインが完了した後、フォームデータからレコードを投稿/作成します
以下のコードを参照してください(location_controller.rb):
オン:「elsif @location.last_step
?」では、ユーザーがログインしていない場合はサインアップするように指示されますが、ログイン後にデータは保存されません。
Deviseが考えたセッションフォームデータを渡して、サインアップ後にレコードを投稿/作成する方法はありますか?
前もって感謝します
def new session[:location_params] ||= {} if current_user.nil? @location = Location.new(session[:location_params]) else @location = current_user.locations.new(session[:location_params]) end @location.current_step = session[:location_step] respond_to do |format| format.html # new.html.erb format.json { render json: @location } end end def create session[:location_params].deep_merge!(params[:location]) if params[:location] if current_user.nil? @location = Location.new(session[:location_params]) else @location = current_user.locations.new(session[:location_params]) end @location.current_step = session[:location_step] if @location.valid? if params[:back_button] @location.previous_step elsif @location.last_step? @location.save else @location.next_step end session[:location_step] = @location.current_step end if @location.new_record? render "new" else session[:location_step] = session[:location_params] = nil flash[:notice] = "Trip saved!" redirect_to @location end end