Ruby on rails Rails-从javascript事件发出ajax请求并部分加载
怎么了 我正在使用Rails3.2.3和Ruby1.9.2p290 我有一个模型购买,有很多购买付款:Ruby on rails Rails-从javascript事件发出ajax请求并部分加载,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,怎么了 我正在使用Rails3.2.3和Ruby1.9.2p290 我有一个模型购买,有很多购买付款: class Purchase < ActiveRecord::Base has_many :purchase_payments, :class_name => 'PurchasePayment', :dependent => :destroy accepts_nested_attributes_for :purchase_payments def Purchas
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
在我的控制器中,我的类声明和以下方法之后有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
这样我的app/views/purchases/buid_payments.js.erb就可以正常运行了。
问题是,我正在建立一个应该包含在我的表单中的付款集合,并且以我目前的方式做的事情看起来不像rails会这样做。这样,我将不得不在js.erb文件中编写大量代码,但我仍然不知道如何使create方法从params构建完整的购买(我不知道如何从javascript构建表单)
我研究了几种不同的方法,但没有一种方法给出了从javascript事件发出ajax请求的集成解决方案,也没有一种方法让视图为我的嵌套属性创建嵌套字段(我必须记住,这是购买付款的集合)
我看到了,但是那些是建立在像link_to和link_to_函数这样的助手方法之上的
有人能告诉我如何才能做到这一点吗
$.ajax({
url: "purchases/build_payments",
type: 'POST',
data: $('#purchase_payments_count').val(),
dataType: 'html',
headers: {
'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
}
});
它将运行buid_payments.js.erb,可以填充\重新创建您的表
如果看不到,我将无法帮助您。抱歉,但我不知道这将如何更改服务器的响应。
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);
}
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
$.ajax({
url: "purchases/build_payments",
type: 'POST',
data: $('#purchase_payments_count').val(),
dataType: 'html',
headers: {
'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
}
});
def build_payments
pc = params[:payments_count].to_i
@purchase = Purchase.new
@purchase_payments = Purchase.build_payments pc
respond_to do |f|
f.js {}
end
end