再送信を試みるまでは正常に機能する非常に単純なフォームがあります。その後、新しいレコードを作成する代わりに、レコードを更新します。
私の見解では、私はこれを持っています:
#new_order_form
= render 'form'
そして私のフォームの部分:
= semantic_form_for [@location, @order], :remote => true do |f|
-if @order.errors.any?
#notice{:class=>'alert alert-block alert-error fade in'}
%a{:class=>"close", :data=>{:dismiss=>"alert", :href=>"#"}}
x
%h3
= pluralize(@order.errors.count, "error")
- @order.errors.full_messages.each do |msg|
= msg
%br
%table{:class => 'table table-bordered', :style=> {width: '50%'}}
%tr
%td= f.text_field :product_order_id, :placeholder => "Order ID"
そして私のcreate.jsで:
$("#new_order_form").html("<%= escape_javascript(render("form")) %>");
これは注文を作成するのにうまく機能し、エラーが存在する場合はエラーをレンダリングします。
問題は、ページを更新せずに別の注文番号を入力すると、新しいレコードが作成されるのではなく、以前に作成されたレコードが更新されることです。
フォーム コードを見ると、送信アクションが更新に置き換えられていることがわかります。
コードをこれに置き換えようとしました:
= semantic_form_for [@location, @order], :remote => true do |f|
#new_order_form
= render 'form', :f => f
そして、これは create.js にあります
$("#new_order_form").html("<%= escape_javascript(render :partial => 'form', :locals => {:f => @order}) %>");
どちらも機能せず、無効な text_field について不平を言います。
これを行う最善の方法は何ですか?ありがとう