向ajax响应添加额外数据

时间:2014-10-02 06:45:43

标签: ruby-on-rails ajax ruby-on-rails-4

我有这段代码:

var jqxhr = $.ajax({
    url:      "/customers/shipments/get_carrier_products_and_prices_for_shipment.json",
    type:     "POST",
    dataType: "json",
    data:     data
})

和控制器的最后一行:

if @carrier_products_and_prices.length > 0
    @digest = params[:digest]
    @html     = render_to_string(partial: "components/customers/shipments/carrier_products_and_prices_for_shipment_table.html.haml", locals: {carrier_products_and_prices: @carrier_products_and_prices})
else
    @html = render_to_string(partial: "components/customers/shipments/no_carrier_products_available.html.haml", locals: {carrier_products_and_prices: @carrier_products_and_prices})
end

哪个击中了rails控制器。我的问题是,如何控制/追加额外的数据到rails返回的响应对象?现在,它只返回一个html字符串,我也希望能够发送一个响应ID

2 个答案:

答案 0 :(得分:2)

看起来您的客户端期待JSON正文。只需创建要返回给客户端的值的哈希值,然后调用render json: hash,其中hash包含要作为JSON返回给客户端的值。

答案 1 :(得分:1)

由于你已经在使用JSON dataType,所以没有什么可以阻止你将你的东西打包在一个对象中:

{
  "html": "<div>...</div>",
  "responseID": 69
}