2016-01-21 3 views
2

Когда я отправляю удаленную форму в рельсах, форма POST дублирует данные, даже если я вручную сериализую форму, используя jQuery, показывает, что дубликатов нет. Что может быть причиной этого?Rails удаленная форма, представляющая данные повторяющейся формы

* Обычно это не проблема, но одна из данных формы - это массив, в результате в представленном массиве есть повторяющееся значение.

Результат от сети инспектора Хрома enter image description here

Результат от JQuery Manual

UPDATE Вот gist моей формы (удаление HTML наценки):

<% @order.available_payment_methods.each do |method| %> 
    <%= radio_button_tag "order[payments_attributes][][payment_method_id]", method.id, method == @order.available_payment_methods.first %> 
    <%= Spree.t(method.name, :scope => :payment_methods, :default => method.name) %> 
    <%= render :partial => "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method } %> 
<% end %> 

# partial 

    <% param_prefix = "payment_source[#{payment_method.id}]" %> 

    <%= label_tag "name_on_card_#{payment_method.id}", Spree.t(:name_on_card) %><span class="required"> 
    <%= text_field_tag "#{param_prefix}[name]", "#{@order.billing_firstname} #{@order.billing_lastname}", { id: "name_on_card_#{payment_method.id}", class:'form-control'} %> 

    <% options_hash = Rails.env.production? ? {:autocomplete => 'off'} : {} %> 
    <%= text_field_tag "#{param_prefix}[number]", '', options_hash.merge(:id => 'card_number', :class => 'required cardNumber form-control', :size => 19, :maxlength => 19, :autocomplete => "off") %> 


    <%= text_field_tag "#{param_prefix}[expiry]", '', :id => 'card_expiry', :class => "required cardExpiry form-control", :placeholder => "MM/YY" %> 

    <%= text_field_tag "#{param_prefix}[verification_value]", '', options_hash.merge(:id => 'card_code', :class => 'required cardCode form-control', :size => 5) %> 


    <% if @order.bill_address %> 
    <%= fields_for "#{param_prefix}[address_attributes]", @order.bill_address do |f| %> 
     <%= render :partial => 'spree/address/form_hidden', :locals => { :form => f } %> 
    <% end %> 
    <% end %> 
    <%= hidden_field_tag "#{param_prefix}[cc_type]", '', :id => "cc_type", :class => 'ccType' %> 

UPDATE Отправка формы без remote: true исправляет проблему (НО мне это нужно!)

+1

Можете ли вы показать нам свою HTML-форму? Я подозреваю, что вы копируете 'fields_for', не обновляя' id' каждого добавляемого поля. –

+1

Попробуйте отправить форму без «remote: true» и проверить журналы своего сервера, если там все еще будет дублирование. Тогда вы узнаете, является ли это «javascript» или ошибкой, которую вы сделали с вашей «формой» – DevMarwen

+0

@RichPeck. Я обновил сообщение с помощью формы. – harinsa

ответ

0

Добавить onsubmit="return false();" на вашей форме это будет убедиться, что форма не занесена путем подачи формы по умолчанию. Он будет отправлен через ajax по мере добавления remote: true

Смежные вопросы