Rails - 将具有多个属性的对象传递给javascript

时间:2015-11-27 15:50:58

标签: javascript ruby-on-rails

我必须将对象Product传递给javascript。 我已经阅读了不同的方法,如:

  1. 数据参数,我已经使用

     <div id="chosen-product-<%=product.id %>" class="chosen-product-panel panel panel-primary"
     data-conversion="<%= product.conversion %>" data-measure="<%= product.measure %>"
    
  2. gem gon(看起来很相似)

  3. 但我的问题是产品有大约50个属性。所以我不想传递50个数据参数。我怎样才能传递整个对象(一般来说可能吗?)然后在javascript中获取他的属性?我也看过Ryan Bates的http://railscasts.com/episodes/324-passing-data-to-javascript?autoplay=true,但也找不到解决问题的方法。

2 个答案:

答案 0 :(得分:1)

您可以将对象转换为json:

<div id="chosen-product-<%=product.id %>" class="chosen-product-panel panel panel-primary"
 data-conversion="<%= product.conversion.to_json %>" data-measure="<%= product.measure.to_json %>"

答案 1 :(得分:1)

你必须将@product渲染为json。然后发送ajax请求并获取此对象。

class ProductsController < ApplicationController
  def get_product
    @product = Product.find(params[:id])
    render json: {product: @product}
  end
end
$.ajax({
   type: 'post',
   url: 'products/get_product',
   success: function (product) {
     //here you get product object with all attributes
   },
   error: function (err) {
    console.log(err);
   },

});