gpt4 book ai didi

ruby-on-rails - 将 Rabl 转换为 Erb json View

转载 作者:行者123 更新时间:2023-12-04 05:30:06 25 4
gpt4 key购买 nike

我正在尝试将此 .json.rabl View 转换为 .json.erb 并且由于我对 ruby​​ 非常陌生,我正在寻找实现这一目标的方向。解决这个问题的最佳方法是什么?

object @perform
attributes :id => :team_id
attributes :perform_id
node(:fb_user_id) {|x| x.user.fb_user_id.to_s}
node(:first_name) {|x| x.user.first_name}
node(:last_name) {|x| x.user.last_name}
attributes :level, :jersey, :height, :weight, :positions
node(:stat_source) {|x| Stat::SOURCES.key(x.stat_source)}



if !@nomvps
node({}, :if => lambda{ |m| @event.present? }) do |x|
{
mvp_votes: Vote.player_vote_count(@event.id, x.id)
}
end
end



if !@nostats && (@_options[:event] || @event)
node :stats do |perform|
Hash[*perform.source_stats.where(event_id: (@_options[:event].try(:id) || @event.id)).map{|x|[x.name, x.value]}.flatten]
end
end

最佳答案

Erb 与 rabl 等模板语言相反 - 您创建所需的 json,然后使用 erb 插入值,而不是像在 rabl 中那样使用代码定义结构。

在带有 <% %> 的 erb 环绕文本中表示一些 ruby​​ 代码(用于分配、循环等):

<% x = "output" %>

并且 <%= %> (NB = sign) 表示通过调用 to_s 将输出到模板的 ruby​​ 代码(任何代码):
<%= x.to_json %>

没有被这些符号包围的任何东西都按原样输出。

因此,您应该能够使用假值创建所需的 json,然后调用相关的 ruby​​ 代码以在运行时获取真实值。例如类似这个片段(不熟悉rabl所以json的格式可能需要调整):
[{  "perform" :
{
"id" : <%= @perform.team_id %>,
"user" : <%= @perform.perform_id %>,
...

}
}]

<% if !@nomvps %>
<% node({}, :if => lambda{ |m| @event.present? }) do |x| %>
{
mvp_votes: <%= Vote.player_vote_count(@event.id, x.id) %>
}
<% end %>
<% end %>

例如,对于作为散列干净地映射到 json 的对象,您还可以考虑创建 to_json 方法,而不是将它们放在这样的模板中,但是对于像这样没有干净映射的复杂结构,模板可能是最好的。

我将从名为 xx.json.erb(纯 json)的文件中的 json 开始,然后开始使用 erb 插入值。

关于ruby-on-rails - 将 Rabl 转换为 Erb json View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com