Hello,
i have problem iterating through hashes, for example I have two
hashes:
1.
{:item => {:subitem => {data => “yes”, otherdata => “yes”}}
2.
{:item => {:subitem => [{data => “yes”, otherdata => “yes”},{data =>
“no”, otherdata => “yes”}]}
I wish with in view iterate through hash and draw table, but using
hash.each function, in first example rails iterate through data and
other data, but in second case through {},{} not data and other data.
Is there any solution how simply solve this problem?
hash.each function, in first example rails iterate through data and
other data, but in second case through {},{} not data and other data.
In the second case, since subitem is an array, you will have to
iterate through the array and for each element iterate through the
hash. If you are doing that already show us the code (strip out
everything that is not required first so that we can concentrate on
the important stuff).
Since that is only six lines you could easily have inserted it inline:
<% @search_results[:item][:subitem].each do |key, value| %>
<tr>
<td><%= key %></td>
<td><%= value %></td>
</tr>
<% end %>
Think about the code. If @search_results[:item][:subitem] is a hash
as in your first example then this is using
Hash.each do |key, value|
which is what you want. If it is in fact an array, as in your second
example this is going to use
Array.each do |key, value|
which is meaningless I think. Hopefully you know whether it is an
array or not and can use a nested each block to iterate through the
array. Perhaps you can make it always an array which sometimes only
has one entry to simplify the code.
Colin
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.