サインアップ ウィザードを作成するために wicked で devise を使用していますが、プロファイルを作成する際に発生した問題について確信が持てません。ユーザーが電子メールとパスワードを提供すると、指定した配送業者または運送業者に基づいてプロファイルを作成するステップに転送されます。ただし、一般的にプロファイルを作成するためのコントローラーとフォームにコードを含める必要があるかどうかはわかりません。アプリケーション用のコードは次のとおりです。
ステップコントローラー:
class UserStepsController < ApplicationController
include Wicked::Wizard
steps :carrier_profile, :shipper_profile
def create
@user = User.last
case step
when :carrier_profile
@profile = CarrierProfile.create!(:dot => params[:dot])
if @profile.save
render_wizard @user
else
flash[:alert] = "Record not saved"
end
when :shipper_profile
@profile = ShipperProfile.create!(params[:shipper_profile)
if @profile.save
render_wizard @user
else
flash[:alert] = "Record not saved"
end
end
end
終了 終了
def show
@user = User.last
@carrier_profile = CarrierProfile.new
@shipper_profile = ShipperProfile.new
case step
when :carrier_profile
skip_step if @user.shipper?
when :shipper_profile
skip_step if @user.carrier?
end
render_wizard
end
end
運送業者プロファイルのフォーム:
<% form_for @carrier_profile , url: wizard_path, method: :post do |f| %>
<div>
<%= f.label :dot, "Please enter your DOT Number:" %>
<%= f.text_field :dot %>
</div>
<%= f.submit "Next Step", class: "btn btn-primary" %>
<% end %>
荷送人プロファイルのフォーム:
<% form_for @shipper_profile , url: wizard_path, method: :post do |f| %>
<div>
<%= f.label :company_name, "What is your company name?" %>
<%= f.text_field :company_name %>
</div>
<%= f.submit "Next Step", class: "btn btn-primary" %>
<% end %>
ユーザーモデル:
class User < ActiveRecord::Base
has_one :carrier_profile
has_one :shipper_profile
end
両方のプロファイルの作成を処理する一般的な new および create メソッドを作成するにはどうすればよいでしょうか? 現在のコードでは、user_steps コントローラーに POST メソッドがないことを示していますが、rake ルートを実行すると、これは正しくないことがわかります。