【问题标题】:Ruby JBuilder with variable names?带有变量名的Ruby JBuilder?
【发布时间】:2016-12-25 11:37:57
【问题描述】:
在 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?
【问题讨论】:
标签:
ruby-on-rails
json
ruby
jbuilder
【解决方案1】:
您也可以使用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
【解决方案2】:
为了发送一个静态名字未知的消息,你可以使用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