2016-09-27 6 views
1

Я пытаюсь динамически вставлять заголовки и текст в HTML с помощью Ruby и Sinatra. Пока у меня нет заголовков, но у меня нет успеха на теле.Динамически отображать хэши/данные/JSON в представлении

Вот мой код:

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" 
}, ... 
] 

Как отображения: enter image description here способ решить помещает вид приращения, например

<%= value[0] %> 

но я не могу найти элегантный способ.

+0

... и что ответ (в вашем браузере)? – Felix

+0

Только заголовки работают нормально. –

+0

Не похоже, что вы что-то делаете с телом. Вы перебираете '@ keys', но не' @ values', который я предполагаю, что вы хотите в 'tbody'. Можете ли вы опубликовать этот код? – DiegoSalazar

ответ

1

Если я правильно вас понимаю, вы хотите показать значения в отдельных тегах td, вы можете сделать это вот так. @values ​​- это массив массивов (строк), которые содержат значения ячеек.

<tbody> 
<% @values.each do |row| %> 
    <tr> 
    <% row.each do |value| %> 
    <td><%= value %></td> 
    <%end%> 
    </tr> 
<% end %> 
</tbody> 

EDIT: Вы получаете свой массив массивов, как этот

banks.map{|x| x.values} 
#[[247, "246", "ABC BANK S.A."], [248, "25", "Beta Bank"]] 

и вы передать его на ваш взгляд, как это, не уверен, что в случае необходимости

erb :list, :locals => {values: @values, keys: @keys} 
+0

Я сейчас понимаю, но на контроллере, как я могу передать все значения? Использование значений (at) = (at) banks.values ​​дает мне ошибку значений неопределенных методов ''. –

+0

Вопрос в следующем: что я могу передать контроллеру для просмотра, правильно работает с этим , который вы опубликовали? –

+0

Питер, спасибо за вашу помощь. Наконец, у меня есть «массив массивов», я пытался понять это! –