在to_indexed_json方法中包含子记录

时间:2014-07-02 05:45:18

标签: ruby-on-rails tire

在Invoice模型中我使用to_indexed_json方法

def to_indexed_json
  {
      invoice_number: invoice_number,
      state: state,
  }.to_json
end

我包含了像这样的invoice_line_items(子)属性

def to_indexed_json
  {
      invoice_number: invoice_number,
      state: state,
      invoice_line_items: { description: invoice_line_items.description }
  }.to_json
end

现在通过创建发票我收到此错误

NoMethodError - undefined method `item_description' for #<Array:0xd748eb8>:

如何在to_indexed_json方法中包含invoice_line_items属性??

提前致谢

1 个答案:

答案 0 :(得分:0)

由于invoice_line_itemsArray,您尝试在description上的Array上调用方法LineItem。试试这个:

def to_indexed_json
  {
      invoice_number: invoice_number,
      state: state,
      invoice_line_items: invoice_line_items.map { |li| { description: li.description } }
  }.to_json
end

根据您尝试实现的目标,您可能需要查看JBuilder之类的内容。它基本上为您提供了一个简单的DSL来呈现JSON作为视图,并使您无法管理巨大的哈希结构。对它来说也是一个很好的RailsCast