0

すべて同じモデルで機能する 4 つのステップを含むフォーム ウィザードのセットアップがあります。

最初のフォームに入力して [送信] をクリックすると (ステップ 2 にリダイレクトされます)、フォームは既に入力されており、重複した同一のフォームが下に追加されています。これは各ステップで発生します。

ステップ 1 で [送信] をクリックして 2 (または 3/4) になった後、完全に新しいフォームをレンダリングするにはどうすればよいですか?

ステップ1

<%= simple_form_for @user, url: wizard_path do |f| %>

  <h2 class="signup">Step 3: Friends Birthday</h2>


  <%= f.simple_fields_for :events do |event_f| %>
    <%= event_f.input :name, :placeholder => 'Enter Persons Name' %>

    <%= event_f.input :date, :as => :date_picker, :input_html => { :class => 'special' } %>

    <%= event_f.input :reccuring, :label => false,  :inline_label => 'Remind me of this event every year?' %>

    <h3>Choose up to 3 interests for this person</h3>
      <%= event_f.association :interests, :label => false, :as => :check_boxes %>

      <%= event_f.input :kind, :as => :hidden, :input_html => { :value => "Birthday" } %>

<%end%>

    <%= link_to "skip this step", next_wizard_path %>
    <%= f.button :submit, 'Submit' %>
    <%end%>

ステップ2

<%= simple_form_for @user, url: wizard_path do |f| %>

<h2 class="signup"> Married? Add your anniverarsy</h2>

  <%= f.simple_fields_for :events do |anniversary_f| %>

    <%= anniversary_f.input :name %>
    <%= anniversary_f.input :date, :as => :date_picker, :input_html => { :class => 'special' } %>

    <h3>Choose up to 3 interests for this person</h3>

     <%= anniversary_f.association :interests, :as => :check_boxes, :label => false %></li>

     <%= anniversary_f.input :kind, :as => :hidden, :input_html => { :value => "Anniversary" } %>
     <%end%>


        <%= link_to "skip this step", next_wizard_path %>
        <%= f.button :submit, 'Submit' %>
     <%end%>

コントローラー

events_controller.rb

  def new
      @user = current_user
      @event = Event.new 
    end

  def create
      @user = current_user
      @event = Event.new(params[:event])
      @event.user = User.find(current_user.id)
   end

ユーザーコントローラー

class UsersController < ApplicationController
  before_filter :authenticate_user!

  def create
      @user = User.new(params[:user])
      if @user.save
        redirect_to user_steps_path
      else
        render :new
      end
    end
4

1 に答える 1

1

1 つのステップを完了したら、新しいオブジェクトを intilize し、この 2 番目のフォームを新しいオブジェクトにバインドします。このステップを 3 番目と 4 番目のフォームに対して繰り返します。

初期化するたびに意味する

     @user = User.new
于 2012-06-21T13:48:14.297 に答える