将id添加到哈希

时间:2010-10-12 18:50:58

标签: ruby-on-rails ruby

好的,所以我正在创建一个哈希,我需要将id添加到hash中。这是我的代码

h = Hash.new {|h1, k1| h1[k1] = Hash.new{|h2, k2| h2[k2] = []}}
@result, today = [ h, h.dup], Date.today

Request.find_all_by_artist("Metallica", :select => "DISTINCT venue, showdate, LOWER(song) AS song, id").each do |req|
 # need to insert the req.id in the hash somewhere 
  idx = req.showdate < today ? 0 : 1
  @result[idx][req.venue][req.showdate] << req.song.titlecase
end

有关如何执行此操作的任何建议

这是我在视图中的循环

<% @result.each do |venue, date| %>

<li>
    <a href="#"><%= venue %></a>
            <% date.each do |key, song| %>
            <%= key %>
            <ul class="acitem">
                <% puts key.inspect %>
                <% puts song.inspect %>

                    <% songs.each do |each_song, count| %>
                    <li><%= each_song %> <%= each_song %></li>
                <% end %><% end %>
    </ul>
</li>
<% end %>

我需要拥有每个请求的ID ....任何想法

1 个答案:

答案 0 :(得分:2)

如果您推送整个记录而不仅仅是标题,那么在迭代歌曲列表时您将可以访问此信息。

@result[idx][req.venue][req.showdate] << req

然后您可以像在视图中一样使用它:

<% songs_requests.each do |song_request, count| %>
  <li id="song_<%= song_request.id %>"><%= song_request.song.titlecase %></li>
<% end %>

你粘贴的视图和控制器中定义的结构似乎没有完全匹配,所以我试图在这里绘制一般图片。