Ruby JBuilder有变量名吗?

时间:2016-08-18 13:47:08

标签: ruby-on-rails json ruby jbuilder

如何在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 个答案:

答案 0 :(得分:4)

您也可以使用set!方法。

jbuider在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 :(得分: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