【问题标题】:Populate select options in a haml view with JSON data使用 JSON 数据填充 haml 视图中的选择选项
【发布时间】:2017-05-26 07:46:36
【问题描述】:

如何使用sinatra 控制器中的JSON 参数填充haml 视图中的%select 选项。

在sinatra 控制器中我有:

response = JSON.parse(curl_resp)
nestedData = response["data"][0]
  nestedData.each do |c|
  names =  c["attributes"]["names"]
end
return haml :newPage, :locals => {:name => example: name in names}

这是newPage.haml 视图中的%select 选项:

%select{:name => "select names"}
  %option{:value => "id1"} #{locals[:name]}.[0]
  %option{:value => "id2"} #{locals[:name]}.[1]
  %option{:value => "id3"} #{locals[:name]}.[2]
  %option{:value => "id4"} #{locals[:name]}.[3]

这是我从curl 获得的JSON 示例:

{"data":[
  {"id":"id1","attributes":{"name":"gnu"}},
  {"id":"id2","attributes":{"name":"Alice"}},
  {"id":"id3","attributes":{"name":"testsubject"}},
  {"id":"id4","attributes":{"name":"testissuer"}}
]}

【问题讨论】:

    标签: json sinatra haml


    【解决方案1】:

    如果您的要求是遍历整个数据集并显示<option> 标签,您可以使用类似:

    # app.rb
    
    get '/' do
      # This is obtained from JSON.parse-ing the incoming data. I've used the JSON
      # value directly
      @json = {
        data:[
          {id:"id1",attributes:{name:"gnu"}},
          {id:"id2",attributes:{name:"Alice"}},
          {id:"id3",attributes:{name:"testsubject"}},
          {id:"id4",attributes:{name:"testissuer"}}
        ]
      }
      haml :index
    end
    

    在视图中:

     / index.haml
    
     %select
       = @json[:data].each do |data_item|
         %option{ value: data_item[:id] }
           = data_item[:attributes][:name]
    

    这样,您不必在模板中硬编码选项标签的数量,这会使模板变得更加复杂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2013-07-16
      • 2018-10-15
      相关资源
      最近更新 更多