Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-从javascript事件发出ajax请求并部分加载_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails Rails-从javascript事件发出ajax请求并部分加载

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

怎么了

我正在使用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 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