發生了什麼?Rails - 從javascript事件發出ajax請求並加載部分
我使用rails 3.2.3和ruby 1.9.2p290。
我有有許多purchase_payments模型採購:
class Purchase < ActiveRecord::Base
has_many :purchase_payments, :class_name => 'PurchasePayment', :dependent => :destroy
accepts_nested_attributes_for :purchase_payments
def Purchase.build_payments(count)
#Creat #count payments with some logic for each of them
end
end
在我的形式,我已經number_field:
<td>
<%= f.number_field :payments_count, :min => 0 %>
</td>
現在,我想有purchase_payment領域出現基於付款次數。對於這一點,我有一個特定的div:
<div id="purchase_payments_space"> </div>
每個資源,到目前爲止我發現,關於Ajax輔助性標籤產生的會談中,像的link_to ...:遠程=>真實的,但使用這個標籤,用戶將不得不點擊鏈接來調用遠程函數。在我的應用程序的另一部分,使用jQuery Ajax請求,我想這樣的用於發送請求到我的控制器:
function load_payments() {
$.ajax({
type: "POST",
url: "/purchases/build_payments/" + document.getElementById("purchase_payments_count").value,
});
}
$(document).ready(function() {
$("#purchase_payments_count").change(load_payments);
}
在我的控制,我有respond_to代碼:我的課之後的js聲明和下面的方法:
def build_payments
pc = params[:payments_count].to_i
@purchase = Purchase.new
@purchase_payments = Purchase.build_payments pc
respond_to do |format|
format.js
end
end
這樣,我有我的應用程序/視圖/採購/ buid_payments.js.erb運行正常。 問題是,我正在構建一個應該包含在我的表單中的支付集合,並且按照我目前所做的方式執行操作看起來並不像rails會這樣做。這樣,我將不得不在js.erb文件中編寫大量代碼,並且仍然無法弄清楚如何讓create方法從params中構建完整的購買(我不知道如何從javascript)。
我看了幾種不同的方法,但都沒有給出一個集成的解決方案,用於從javascript事件發出ajax請求,並讓視圖爲我的嵌套屬性(我必須記住它的一個purchase_payment集合)創建嵌套字段。
我看到http://railscasts.com/episodes/196-nested-model-form-part-1和http://railscasts.com/episodes/197-nested-model-form-part-2,但那些建立在helper方法之上,比如link_to和link_to_function。
任何人都可以指出我該怎麼做到這一點?
對不起,但我不明白這將如何改變服務器的響應。 – HFSDevBR 2012-07-25 18:00:43