在to_json中的Rails自定义字段

时间:2015-03-30 14:11:10

标签: ruby-on-rails json

我有这段代码:

@locations = @list.all.to_json(:root => false,
                 :only => [:author,:lat,:long,:text])

效果很好,正是我想要的。但是现在我想在每个条目的显示页面的字段中添加一个URL。

所以它会像:

[{
   "author:"blabla",
   "lat":blabla,
   "long":blabla,
   "text":"blabla",
   "url":"url for show page"
 }]

我尝试过合并选项,但它不会添加任何内容或抛出任何错误。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

为什么不将此字段添加到模型(或任何您称为@list.all)的字段中。例如:

class MyModel

  def url
    "/url/to/page/#{id}"
  end

end

并在控制器中添加一个字段到only数组

@locations = @list.all.to_json(:root => false,
             :only => [:author,:lat,:long,:text,:url])

答案 1 :(得分:1)

感谢phts,我得到了一个解决方案:

我在模型中定义了方法

def url
    "/url/to/page/#{id}"
end

在我添加的选项中:

:methods => :url

它有效。

答案 2 :(得分:0)

你在to_json之后有一个数组,所以没有#merge

@locations = @list.all.to_json(:root => false, :only => [:author,:lat,:long,:text]).collect do |l|
  l.merge( {text: 'mytext',url: 'myurl'} )
end