2014-10-09 47 views
0

我有Client模型和Contact模型。在客戶端頁面上,我將「添加到聯繫人」按鈕保存在contact模型上。導軌 - 保存來自其他模塊的新數據

我有這樣的代碼我的客戶頁:

= form_for(@contact, remote: true, html: { class: 'form-horizontal ajax-form add-to-contact', style: 'margin-bottom: 0;', 'data-model-name' => 'contact'}) do |f| 
    = f.text_field :type, :value => 'clients' 
    = f.text_field :client_id, :value => client.id 
    = f.submit "Add to Contact", class: 'btn btn-success btn-submit-add-to-contact' 

clients_controler.rb

def index 
    @contact = Contact.new(params[:client_id], params[:type]) 
end 

contacts_controller.rb

def create 
    @contact = Contact.new(contact_params) 
    respond_to do |format| 
     if @contact.save 
     format.js {} 
     else 
     format.json { render json: @contact.errors, status: :unprocessable_entity } 
     end 
    end 
end 

我有coffeesript代碼,當我提交,它會保存到contact型號:

$(document).on "click", ".btn-submit-add-to-contact", -> 
    $(this).prop "disabled", true 
    $(this).val "Added to Contacts!" 
    $(".add-to-contact").submit() 

但是存在保存問題。我的所有客戶都會保存,因爲他們正在循環並自動保存,儘管我沒有提交其他客戶端。請幫忙。

+0

我們需要更多的細節,因爲我們無法確定問題所在。 「我的所有客戶都節省了什麼」 - 您是否在日誌中看到它?總之,預期會發生什麼,發生了什麼? – BroiSatse 2014-10-09 11:20:40

+0

是的。我看到他們正在全力挽救。 – BartSabayton 2014-10-09 11:28:51

+0

你能提供一個日誌嗎? – BroiSatse 2014-10-09 11:36:08

回答

0

我得到了這一點。

我修改我的JS:

$(document).on "click", ".btn-submit-add-to-contact", -> 
    $(this).prop "disabled", true 
    $(this).val "Added to Contacts!" 
    contact_form = $(this).closest('.add-to-contact-form').find('.ajax-form') 
    contact_form.submit() 
    return 

而且我把我的類表格前:

.add-to-contact-form 
    = form_for(@contact, remote: true, html: { class: 'form-horizontal ajax-form add-to-contact', style: 'margin-bottom: 0;', 'data-model-name' => 'contact'}) do |f| 
     = f.text_field :type, :value => 'clients' 
     = f.text_field :client_id, :value => client.id 
     = f.submit "Add to Contact", class: 'btn btn-success btn-submit-add-to-contact' 

我用.closest和正常工作對我來說。 感謝您的幫助!

0

如果您要添加自己的Ajax功能,則應該刪除remote: true。 此外,您應該防止默認點擊操作,否則瀏覽器將提交表單兩次。

$(document).on "click", ".btn-submit-add-to-contact", ->(e) 
    $(this).prop "disabled", true 
    $(this).val "Added to Contacts!" 
    $(".add-to-contact").submit() 
    e.preventDefault() 

如果您正在使用jQuery的UJS你應該聽的完成Ajax調用來代替:

$(document).ready -> 
    $("form").on("ajax:success", (e, data, status, xhr) ->