Ruby循环问题

den*_*icz 0 ruby activerecord ruby-on-rails

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

这是脚本

@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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Ste*_*lat 13

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

@history = {m.title => @h_lang.english}
Run Code Online (Sandbox Code Playgroud)

对此:

@history[m.title] = @h_lang.english
Run Code Online (Sandbox Code Playgroud)

  • @dennismonsewicz:那么现在是时候为这个答案推出那个大脂肪概述的复选标记了. (6认同)