1

現在、検証エラーのあるフォームを送信すると、フォームは空白の値にリセットされます。ユーザーがフォーム全体を再入力する必要がないように、フィールドに値を保持する方法はありますか?

私の作成アクション:

def create
  @quote = Quote.new(params[:quote])
  if @quote.save
    flash[:success] = "Record Created Successfully"

    redirect_to quotes_url
  else
    render 'new'
  end
end

私のフォーム:

<%= form_for @quote do |f| %>
<fieldset>
  <% if @quote.errors.any? %>
      <div id="errorExplanation">
        <h2><%= pluralize(@quote.errors.count, "error") %> prohibited this user from being saved:</h2>
        <ul>
          <% @quote.errors.full_messages.each do |msg| %>
              <li><%= msg %></li>
          <% end %>
        </ul>
      </div>
  <% end %>
  <p>
    <%= f.label :quote_date, "Date of Quote" %>  <br/>
    <%= f.text_field :quote_date %>
  </p>

  <p>
    <%= f.label :good_through %> <br/>
    <%= f.text_field :good_through %>
  </p>

  <p>
    <%= f.label :quote_number %><br/>
    <%= f.text_field :quote_number %>
  </p>
  <p>
    <%= f.label :customer_id, "Customer" %><br/>
    <%= select(:quote, :customer_id, Customer.all.collect {|c| [ c.fname, c.id ] }, :prompt => "Select Customer") %>
  </p>

  <%= f.fields_for :quote_items do |builder| %>
      <%= render 'quote_item_fields', :f => builder %>
  <% end %>

  <%= link_to_add_fields "Add Line Item", f, :quote_items %>

  <p>
    <%= f.submit %>
  </p>
</fieldset>
4

1 に答える 1

0

これを試して:

QuotesController#new

@quote = || Quote.new

このようにして、失敗したパラメーターを含む @quote インスタンス変数#createを 'new' テンプレートに渡すことができ、#new で上書きされません。

免責事項: 実際のコードでこれを検証していません。ただの思い

于 2013-04-27T02:33:30.280 に答える