las*_*igh 5 javascript json ruby-on-rails-3
我想将一个Place对象数组转换为json,我一直这样做:
var places = <%= @places.to_json.html_safe %>;
Run Code Online (Sandbox Code Playgroud)
唯一的问题是@places数组中的每个位置都有一个未包含的关联标记列表.我正在使用acts_as_taggable_on gem来处理标签,所以要获取一个地方的标签列表,我需要说place.tag_list.
我需要做些什么来为javascript数组中的每个位置包含tag_list?我想我需要编写自己的to_json方法,但我不知道如何.
编辑
事实证明,这比我意识到的要容易.我能够这样说:
var places = <%= @places.to_json(:include => :tags).html_safe %>
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,这包含有关每个标签的更多信息,而不是我真正需要的.每个标签都有一个id和名称,我真正想要的只是一个带有标签名称的列表.
该to_json方法还接受一个名为的参数methods.此参数允许您指定应调用并包含在对象的json表示中的方法.既然你提到你有一个被调用的方法tag_list,你可以这样做:
var places = <%= @places.to_json(:methods => :tag_list).html_safe %>
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因,您没有生成标记名称的方法,但每个标记都有一个方法可以为您提供名称,您可以在Place模型中添加一个方法来生成标记名称列表,如下所示:
def tag_names
tags.collect do |tag|
tag.name
end
end
Run Code Online (Sandbox Code Playgroud)
然后你可以tag_names像这样得到你的地方json :
place_json = @places.to_json(:methods => :tag_names)
Run Code Online (Sandbox Code Playgroud)
此技术适用于您要添加到模型的json表示的任何计算属性.
| 归档时间: |
|
| 查看次数: |
3003 次 |
| 最近记录: |