在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属性??
提前致谢
答案 0 :(得分:0)
由于invoice_line_items
是Array
,您尝试在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。