ruby-on-rails - Rails 4 - 简单地在另一个 JSON 中包含多个 JSON

标签 ruby-on-rails ruby json ruby-on-rails-4

我有以下 Controller :

  # orders_controller.rb

  def update_quantity
    @product = Product.by_id(params[:product_id])
    @product_details = ProductDetail.availables.by_id(params[:product_id])

    respond_to do |format|
      format.json { render :json => @product.to_json( { :include => [ :current_price, :product_details ] } ) }
    end
  end

我只想返回包含产品数据的 JSON,包括当前价格和 products_details,但只是可用的详细信息(库存)。

产品和 current_price 运行良好,但如果我使用 :product_details,rails 包含所有详细信息,我希望包含在@product_details 变量中。

谢谢

最佳答案

我不确定我是否理解您的问题。如果 product_details 不起作用,试试这个:

def update_quantity
  @product = Product.by_id(params[:product_id])

  respond_to do |format|
    format.json { 
      render :json => @product.to_json( 
        { 
          :include => [ :current_price ],
          :methods => [ :product_details ] 
        } 
      ) 
    }
  end
end

在您的 Product 模型中添加:

def product_details
  ProductDetail.availables.by_id(self.id)
end

如果您只需要 product_details 的某些字段:

respond_to do |format|
  format.json { 
    render :json => @product.to_json( 
      { 
        :include => [ 
          :current_price, 
          product_details: {
           only: [
              :field1, 
              :field2
            ]
          }
        ] 
      } 
    ) 
  }
end

关于ruby-on-rails - Rails 4 - 简单地在另一个 JSON 中包含多个 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091432/

相关文章:

ruby-on-rails - 设计 1.5 + Omniauth 1.0 + Facebook : undefined method `extra`

python - 如何将 MongoDB 中的 JSON 插入的created_at字段转换为Python中的日期时间对象

json - 我的 Django View 如何知道要呈现哪个模板,或者是否返回 JSON?

ruby-on-rails - rails 应用程序外部的数据库负载平衡?

ruby-on-rails - 基于间隔的API访问和处理不同的DSL

javascript - 根据下拉列表中选择的值设置日期时间选择器格式

ruby-on-rails - 将表示逻辑放在 Controller 中是 Ruby 中的一个好习惯吗?

ruby 正则表达式解析

ruby - 使用 splat 运算符通过引用将参数传递给 block

json - GSON 将带有日历的对象反序列化为带有 Mongo 日期的 json 并返回