ruby-on-rails - 在另一个中包含另一个 jbuilder 模板

标签 ruby-on-rails json jbuilder

考虑以下 show.json.jbuilder 模板:

json.user do |json|
    json.extract! @user, :id, :username, :email, :created_at, :avatar
end

json.policies do |json|
    json.array!(@policies) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end

json.liked do |json|
    json.array!(@liked) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end

json.disliked do |json|
    json.array!(@disliked) do |policy|
        json.extract! policy, :id, :title, :cached_votes_score
    end
end

是否可以将它们分成四个不同的模板,然后将它们包含在 show 模板中?像这样的东西:

include template_user
include template_policies
include template_liked
include template_disliked

如果这不可能,有什么替代方法可以创建更模块化的 jbuilder 代码?我发现我的 jbuilder 代码非常不干。

最佳答案

是的。有可能。像这样拆分文件:

_user.json.jbuilder

json.user 执行 |json| json.extract! @user, :id, :username, :email, :created_at, :avatar 结束

_policies.json.jbuilder

json.policies 执行 |json| json.array!(@policies) 执行 |policy| json.extract!策略,:id,:title,:cached_votes_score 结尾 结束

_liked.json.jbuilder

json.喜欢做|json| json.array!(@liked) 执行 |policy| json.extract!策略,:id,:title,:cached_votes_score 结尾 结束

_disliked.json.jbuilder

json.disliked 做 |json| json.array!(@disliked) 执行 |policy| json.extract!策略,:id,:title,:cached_votes_score 结尾 结束

然后您可以简单地加入他们:

显示.json.jbuilder

json.部分! '用户' json.部分! “政策” json.部分! '喜欢' json.部分! '不喜欢'

但我建议稍微改进它们并使用局部变量编写它们,因此:

_user.json.jbuilder

json.user 执行 |json| json.extract!用户, :id, :用户名, :email, :created_at, :avatar 结束

然后你将它作为参数传递给用户:

json.部分! '用户',用户:@user

关于ruby-on-rails - 在另一个中包含另一个 jbuilder 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31478271/

相关文章:

ruby-on-rails - Rails 中 session 变量的可见性

json - 使用 Microsoft-Avro-Core 进行序列化时包括命名空间属性

ruby-on-rails - Rabl、Jbuilder 还是手动 json 构建 API?

ruby-on-rails - Angular 4 和 Rails 5 发布请求 JSON 格式化

ruby-on-rails - 在 Ruby 中(安全地)解释用户输入的表达式

javascript - 在node.js中解析JSON并在jade中显示

ruby-on-rails-3 - Rails jbuilder 删除 header

ruby-on-rails - 如何在 jbuilder 中渲染一个部分两次?

javascript - Stripe::InvalidRequestError(该客户没有附加付款来源)

java - 为什么原始数组不允许添加到 GSON 中的 JSON 结构