返回嵌套表单的详细信息

时间:2017-05-05 05:24:06

标签: javascript ruby-on-rails ajax

我有一个发票的“collection_select”,我希望在选择发票时我会返回它的详细信息,然后在视图中绘制一个包含详细信息的表格。

我的问题是我不知道如何调用ajax嵌套表单的细节。

1 个答案:

答案 0 :(得分:0)

您可以通过jquery

从collection_select获取invoice_id
$.ajax({
  url: '/invoice/' + $('#dropDownId').val(),
  type: 'GET',
  success: function(res){
    $('#your_invoice_display_area').html(res);
  }
})

在您的控制器中:

def show
  @invoice = Invoice.find(params[:id])
  respond_to do |format|
    format.json {render json: @invoice, include: :invoice_items}
  end
end

json数据将是这样的:

{"invoice":{"id":35,"bill_to":"Mr. X","address":"Address details","custom_date":"2017-07-05","subtotal":"5627.0","discount":null,"tax":null,"number":"INV_00035","created_at":"2017-04-05T16:52:04.071+06:00","updated_at":"2017-05-03T13:50:01.308+06:00","company":"Company Name","phone":"12345667","email":"email@gmail.com","billing_period":"","in_word":null,"total":"5627.0"}}

然后,在你的ajax调用的success函数中,你可以使用json绘制一个表。

首先,制作一个空表,为每个字段提供ID。然后使用jquery添加值。

success: function(res){
  $("#bill_to").html(res["invoice"]["bill_to"]);
  $("#address").html(res["invoice"]["address"]);
}

希望有所帮助。如果您需要更多帮助,请告诉我。