Ruby循环问题

时间:2010-12-29 22:39:21

标签: ruby-on-rails ruby activerecord

我正在编写一个脚本,应该是将一个项目列表写入哈希,但由于某种原因,它只将最后一项放在哈希的循环中...我一直在处理这个脚本所有那一天,所以我很确定我错过的东西。

这是脚本

@mr = MediaRating.where("user_id = ?", session['user_credentials_id'])
@mr.each do |rating|
  @m = Media.where("id = ?", rating.media_id)
  @m.each do |m|
    s = Profile.find_by_subscriber_id(m.subscriber_id)
    @h_lang = Language.find_by_code(s.language)
    @history = {m.title => @h_lang.english}
  end
end

MediaRating表中有多条记录,所以我知道它必须对我的循环方式做些什么。在此先感谢您的帮助!

工作代码:

@mr = MediaRating.where("user_id = ?", session['user_credentials_id'])
@mr.each do |rating|
  @m = Media.find(rating.media_id)
  s = Profile.find_by_subscriber_id(@m.subscriber_id)
  @h_lang = Language.find_by_code(s.language)
  @history[@m.title] = @h_lang.english
end

1 个答案:

答案 0 :(得分:13)

在最后一行中,您将覆盖整个@history哈希,而不是向其添加新的键/值对。我猜这不是你想要的。改变这一行:

@history = {m.title => @h_lang.english}

到此:

@history[m.title] = @h_lang.english