我正在将模型查询结果转换为json并使用
将它们发送到选择框MyModel.find(params[:id]).my_sub_models.map(&:attributes)
我在选择框中显示my_sub_model:name(s)。没关系。
后来我在子模型中添加了一个列(:label),我希望在选择框中显示组合文本,如:name-:label。所以我创建了一个方法
def combined_name
self.name + "-" + self.label
end
如何将每个项目的combine_name现在添加到我的json中?
有什么想法吗?感谢
答案 0 :(得分:1)
要在模型上包含任何方法,请使用:methods。
my_model.to_json(:methods => :combined_name)
# => {"id": 1, "name": "My Name", "label": "Label",
"created_at": "2012/02/01", "combined_name": "My Name - Label"}
参考:API Doc。
<强> 更新 强>
ActiveRecord的 to_json
方法在2.3.8之后被弃用。您可能正在使用Rails 3. A similar question was asked sometime back here,这些回复可能会对您有所帮助。特别是关于宝石acts_as_api。做检查。
答案 1 :(得分:0)
你试过收集吗?
MyModel.find(params[:id]).my_sub_models.collect { |sub_model| [ submodel.id, submodel.combined_name ] }
这样,您只会发送选择框所需的ID和名称。