Ruby on rails 在Ruby/Rails中将对象列表呈现为JSON的更简单方法
我想将对象列表呈现为JSON,但我不想让用户使用JSON,因为我想呈现非常特定的格式和信息子集 这是我的观点(Ruby on rails 在Ruby/Rails中将对象列表呈现为JSON的更简单方法,ruby-on-rails,ruby,json,list,Ruby On Rails,Ruby,Json,List,我想将对象列表呈现为JSON,但我不想让用户使用JSON,因为我想呈现非常特定的格式和信息子集 这是我的观点(foo.json.erb): { “id”:, “进展”:[ 奖励, :user=>@user%>,, @最后, :user=>@user%> ] } 正如您所看到的,它非常难看,因为我必须单独呈现@rewards_中的最后一项,以便在条目后面没有逗号(以使JSON有效) 必须有更好的方法来做到这一点,我只是对Ruby有点陌生。有人能给我指出正确的方向吗?尝试不同的模板系统,如或。尝试
foo.json.erb
):
{
“id”:,
“进展”:[
奖励,
:user=>@user%>,,
@最后,
:user=>@user%>
]
}
正如您所看到的,它非常难看,因为我必须单独呈现@rewards_中的最后一项,以便在条目后面没有逗号(以使JSON有效)
必须有更好的方法来做到这一点,我只是对Ruby有点陌生。有人能给我指出正确的方向吗?尝试不同的模板系统,如或。尝试不同的模板系统,如或。如果您不需要增量渲染,那么您可以简单地构建一个嵌套的哈希/数组Ruby数据结构,并调用
\u json
。您还可以使用符号作为键,它们将成为结果JSON中的字符串键
假设您确实需要增量渲染,那么这可能是您可以做的一个小改进(或者可能只是用另一种替换一种丑陋)。如果将@rewards\u点击的转换为[0..-2]
的数组非常慢,那么这可能会更快
{
"id" : <%= @user.id %>,
"progress" : [
<% @rewards_tapped.each_with_index do |reward, idx|
%><%= idx == 0 ? '' : ',' %>
<%= render "rewardprogress", :reward => reward,
:user => @user
%><% end %>
]
}
{
“id”:,
“进展”:[
奖励,
:user=>@user
%>
]
}
如果您不需要增量呈现,那么您可以简单地构建一个嵌套的哈希/数组Ruby数据结构,并调用\u json
。您还可以使用符号作为键,它们将成为结果JSON中的字符串键
假设您确实需要增量渲染,那么这可能是您可以做的一个小改进(或者可能只是用另一种替换一种丑陋)。如果将@rewards\u点击的转换为[0..-2]
的数组非常慢,那么这可能会更快
{
"id" : <%= @user.id %>,
"progress" : [
<% @rewards_tapped.each_with_index do |reward, idx|
%><%= idx == 0 ? '' : ',' %>
<%= render "rewardprogress", :reward => reward,
:user => @user
%><% end %>
]
}
{
“id”:,
“进展”:[
奖励,
:user=>@user
%>
]
}
um。。为什么这里需要解析器?它不是解析器,而是模板系统。嗯。。为什么这里需要解析器?它不是解析器,它是一个模板系统。在某种程度上,这更干净。至少是干的。谢谢你的回答!在某种程度上,这更干净。至少是干的。谢谢你的回答!