Wickedを使用して Rails 4 アプリにウィザードを作成しました。私は特にこのガイドに従いました。唯一の違いは、ネストされたリソースでこれを行っていることです。ID を使用してフォームが作成しているオブジェクトを見つけるはずのコントローラー アクションに問題があります。
アプリの現在のフローは、ユーザーがボタンをクリックしてオブジェクトを作成し、一連のステップを通じてオブジェクトを更新するウィザードの最初のステップにリダイレクトされるというものです。問題は、ID フィールドでウィザードのステップを渡しているため、パラメーターを介してオブジェクトの ID を渡していないことです。
オブジェクトを作成するボタン
<%= link_to business_loan_application_path(@user), method: :post, :class => "btn btn-success" do %><% end
%>
LoanApplication コントローラ
def create
@user = current_user
@loanapplication = @user.loan_applications.new
@loanapplication.save(validate: false)
redirect_to business_loan_application_wizard_path(@user.id,LoanApplication.form_steps.first)
end
:loan_application_id を何らかの形で business_loan_application_wizard_path 引数に渡す必要があります。
エラー
Couldn't find LoanApplication without an ID
LoanApplication は、has_many 関係を介して、belongs_to Business に属します。
{"business_id"=>"55", "id"=>"business_details"}
business_details は、ウィザードの最初のステップです。これらは、put リクエストでボタンを介して最初にオブジェクトを作成するときに渡されるパラメーターです。
ウィザード コントローラー
class WizardController < ApplicationController
include Wicked::Wizard
before_filter :authenticate_user!
before_filter :require_business
steps *LoanApplication.form_steps
def show
@business = current_user
@loanapplication = LoanApplication.find(params[:loan_application_id])
render_wizard
end
def update
@business = current_user
@loanapplication = @business.loan_applications.last
@loanapplication.update_attributes(loan_application_params(step))
render_wizard @loanapplication
end
end