Ruby JBuilder中如何使用变量名?

3

如何在Ruby中使用jBuilder构建JSON时使用变量名称?

例如,假设我有一个变量var1:

var1 = "query_string"
query = Jbuilder.encode do |json|
          json.query do
            json.query_string do
              json.query "SOMETHING"
            end
          end
        end

我该如何像这样做:

json.var1 do

不直接使用这种方式: json.query_string吗?
2个回答

7

你也可以使用 set! 方法。

jbuilder 在 github 上的文档给出了以下示例:

json.set! :author do
  json.set! :name, 'David'
end

# => {"author": { "name": "David" }}

对于你的例子,可以这样做:

var1 = "query_string"
query = Jbuilder.encode do |json|
  json.query do
    json.set! var1 do
      json.query "SOMETHING"
    end
  end
end

1
为了发送一个名称不是静态已知的消息,可以使用Object#public_send方法:
var1 = 'query_string'

query = Jbuilder.encode do |json|
  json.query do
    json.public_send(var1) do
      json.query "SOMETHING"
    end
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接