【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2014-06-09
        • 2022-01-17
        • 1970-01-01
        • 2011-12-15
        • 2016-01-23
        • 2011-09-02
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多