将 jBuilder 输出分配给变量

Assigning jBuilder output to a variable

我在 Rails 上有一个使用 jbuilder 的应用程序 Ruby。我正在使用 jbuilder 来帮助呈现 json 响应。有没有办法在不渲染结果的情况下将 jbuilder 部分分配给变量?我一直在尝试执行类似下面的操作,但出现此 undefined method 'key' for nil:NilClass 错误。看来我没有正确地将用户模型传递给 user.json.jbuilder 谁能提供任何帮助?

context = ActionController::Base.new.view_context
user_json = JbuilderTemplate.new(context) do |json|
 json.partial! "/users_api/user.json.jbuilder", user: user
end.target!

您可以 return Jbuilder 中的 JSON 直接与 JbuilderTemplate 结合 .target!,但文件名需要以下划线开头。以和下划线开头的文件名表示它是部分文件,这意味着它不能直接呈现。

参考资料(,

Return JSON 直接(调用 _user.json.jbuilder

    context = ActionController::Base.new.view_context
    user_json = JbuilderTemplate.new(context) do |json|
      json.partial! "/users_api/user.json.jbuilder", user: user
    end.target!

渲染 JSON(调用 user.json.jbuilder 调用 _user.json.jbuilder

    render "/users_api/user.json.jbuilder"

user.json.jbuilder

    json.partial! "/users_api/user.json.jbuilder", user: @user

_user.json.jbuilder


    json.email user.email
    json.name user.name