在视图中动态显示 hashes/data/JSON
Dynamically display hashes/data/JSON in the view
我正在尝试使用 Ruby 和 Sinatra 将 headers 和 tbody 动态插入到 HTML 中。直到我得到 headers 但我在 body.
上没有成功
这是我的代码:
get '/list' do
urlData = "http://localhost:3000/data"
responseData = RestClient.get urlData
@banks = JSON.parse(responseData.body)
@keys = @banks[0].keys # OK
@values = @banks.map(&:values) # Trying to put in the html
erb :list
end
观点如下:
<thead>
<tr>
<% @keys.each do |key| %>
<th><%= key %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @values.each do |value| %>
<tr>
<td><%= value %></td>
</tr>
<% end %>
</tbody>
JSON格式:
[
{
"ID": 247,
"Code": "246",
"Name": "ABC BANK S.A."
},
{
"ID": 248,
"Code": "25",
"Name": "Beta Bank"
}, ...
]
如何显示:
解决的方法是放置一个增量,比如
<%= value[0] %>
但是我找不到优雅的方式。
如果我没理解错的话,你想在单独的 td 标签中显示值,你可以这样做。 @values 是包含单元格值的数组(行)数组。
<tbody>
<% @values.each do |row| %>
<tr>
<% row.each do |value| %>
<td><%= value %></td>
<%end%>
</tr>
<% end %>
</tbody>
编辑:你得到这样的数组数组
banks.map{|x| x.values}
#[[247, "246", "ABC BANK S.A."], [248, "25", "Beta Bank"]]
然后你像这样将它传递给你的视图,不确定是否需要
erb :list, :locals => {values: @values, keys: @keys}
我正在尝试使用 Ruby 和 Sinatra 将 headers 和 tbody 动态插入到 HTML 中。直到我得到 headers 但我在 body.
上没有成功这是我的代码:
get '/list' do
urlData = "http://localhost:3000/data"
responseData = RestClient.get urlData
@banks = JSON.parse(responseData.body)
@keys = @banks[0].keys # OK
@values = @banks.map(&:values) # Trying to put in the html
erb :list
end
观点如下:
<thead>
<tr>
<% @keys.each do |key| %>
<th><%= key %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @values.each do |value| %>
<tr>
<td><%= value %></td>
</tr>
<% end %>
</tbody>
JSON格式:
[
{
"ID": 247,
"Code": "246",
"Name": "ABC BANK S.A."
},
{
"ID": 248,
"Code": "25",
"Name": "Beta Bank"
}, ...
]
如何显示:
<%= value[0] %>
但是我找不到优雅的方式。
如果我没理解错的话,你想在单独的 td 标签中显示值,你可以这样做。 @values 是包含单元格值的数组(行)数组。
<tbody>
<% @values.each do |row| %>
<tr>
<% row.each do |value| %>
<td><%= value %></td>
<%end%>
</tr>
<% end %>
</tbody>
编辑:你得到这样的数组数组
banks.map{|x| x.values}
#[[247, "246", "ABC BANK S.A."], [248, "25", "Beta Bank"]]
然后你像这样将它传递给你的视图,不确定是否需要
erb :list, :locals => {values: @values, keys: @keys}