3

3つのステップからなるwicked-gemでマルチステップフォームを構築しました。
最後のステップは 1 回から x 回呼び出し可能である必要があります。

そこで、フォームに別のボタンを追加しました。

if current_step?(:add_principal_claim)
    = file.submit value: 'next_claim', class: 'button tiny radius'
    = link_to 'finish', Wicked::FINISH_STEP, method: :put, class: 'button tiny radius'

コントローラーに別のステップを追加します

steps :add_file_header, :add_claim_header, :add_principal_claim, :next_principal_claim

def show
    if step == :add_claim_header
        case step
            when :next_principal_claim
                redirect_to wizard_path(:add_principal_claim)
            else
                render_wizard
        end
    end
end

最後に必要なステップは、:add_principal_claim です。必要に応じて、複数のデータセットをモデルに保存するために数回呼び出す必要があります。

前のステップからフォームを呼び出すと、show アクションが開始され、add_principal_claim ビューがレンダリングされます。file.submit ボタンをクリックすると、コントローラーの更新アクションが開始され、データセットがモデルに保存され、add_principal_claim ビューが意図したとおりに呼び出されます。

link_to ボタンを取得して更新アクションにジャンプし、データセットを保存してから、最後にウィザードからジャンプするにはどうすればよいですか?

任意の提案をいただければ幸いです。

4

1 に答える 1

0

同じ問題を抱えている人のために: :finish と呼ばれる別のステップを追加し、フォームにはもちろん異なる値を持つ 2 つの送信ボタンがあります。ここでは 'next_principal_claim' と 'finish' と呼ばれます。

def show
  if params[:commit] == next_principal_claim
    redirect_to wizard_path(:add_principal_claim)
  elsif params[:commit] == finish
    redirect_to project_path(@project)
  else
    render_wizard
  end
end

それは私にとってはうまくいきます!

于 2015-03-05T11:07:08.907 に答える