我正在尝试使用Ruby和Sinatra动态地将标题和tbody插入到HTML中。直到我得到标题的那一刻,但我没有在身体上取得成功。
这是我的代码:
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] %>
但我找不到优雅的方式。
答案 0 :(得分:1)
如果我理解正确,你想在单独的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}