【问题标题】:How to output a class method as an attribute in Jbuilder如何在 Jbuilder 中将类方法输出为属性
【发布时间】:2018-03-28 07:49:19
【问题描述】:

我目前正在使用以下jbuilder代码来输出每个@ods的所有属性

json.ods @ods do |od|
  json.od od
end

我想将类方法的结果作为附加属性添加到输出。这是否可能无需单独列出每个属性?

谢谢

【问题讨论】:

  • od的类方法?
  • json.od od - 这大概会为此 od 调用 jbuilder 视图。让我们看看。
  • { ods: [ { od: { id: 300, sophead_id: 126, created_at: "2018-03-27T14:46:41.789Z", updated_at: "2018-03-27T15:52: 29.935Z", status: "Open", del_postcode: " ", route_name: "Call & Collect - 10", route_id: 23, est_pick_pack_time: 180, due_date_time: "2018-03-26T22:57:00.000Z" } }, { od:{ id:314,sophead_id:493,created_at:“2018-03-27T14:46:43.600Z”,updated_at:“2018-03-27T15:52:31.226Z”,状态:“打开”,del_postcode: " ", route_name: " - 17", route_id: null, est_pick_pack_time: 120, due_date_time: "2018-03-26T22:58:00.000Z" } },...等每个 od

标签: ruby-on-rails ruby jbuilder


【解决方案1】:

如果你想调用类方法

json.method ClassName.method_name
json.ods @ods do |od|
  json.od od
end

或者例如方法

json.ods @ods do |od|
  json.od od
  json.method od.method
end

与实例属性合并

json.ods @ods do |od|
  json.od od.attributes.merge(method: od.method)
end

【讨论】:

  • 谢谢,当做 json.ods sorted_ods 做 |od| json.od od json.test od.test end 它正确返回了.test的结果 ods: [ { od: { id: 314, sophead_id: 493, ...etc }, test: 1 }, 但是我想合并这与 od 的其他属性,但尝试: json.ods sorted_ods do |od| json.od od.merge(od_test: od.test) end 为 od 返回未定义的方法 `merge'
  • 你可以使用像od.attributes.merge(od_test: od.test)这样的属性来合并,但是记住在这种情况下返回的json将是一个哈希而不是一个对象
  • 谢谢,这有效:json.ods sorted_ods do |od| json.od od.attributes.merge(od_test: od.test) end
  • @daveanderson88 我已经更新了答案,为了其他人的方便,请接受它。
猜你喜欢
  • 2016-11-03
  • 2013-08-10
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
相关资源
最近更新 更多