Ruby循环问题

Ruby循环问题,ruby,arrays,loops,Ruby,Arrays,Loops,我似乎无法使这个循环正常工作 @mr = MediaRating.where("user_id = ?", session['user_credentials_id']) unless @mr.empty? @mr.each do |rating| @m = Media.where("id = ?", rating.media_id) @m.each do |m| @history << m end end end 控制器: @mr

我似乎无法使这个循环正常工作

@mr = MediaRating.where("user_id = ?", session['user_credentials_id'])

unless @mr.empty?
  @mr.each do |rating|
    @m = Media.where("id = ?", rating.media_id)

    @m.each do |m|
      @history << m
    end
  end
end
控制器:

@mr = MediaRating.where("user_id = ?", session['user_credentials_id'])
@mr.each do |rating|
  @m = Media.where("id = ?", rating.media_id)
  @history << @m
end
@mr=mediaating.where(“user\u id=?”,会话['user\u credentials\u id'))
@每一位先生都做了评级|
@m=媒体。其中(“id=?”,评级。媒体\u id)

@历史媒体
表中有多少内容?如果每个
中介值都返回3个值,那么循环就可以了

另外,
除非@mr.empty?
是不需要的,因为如果
@mr
是空的,
每个
块将不起任何作用

我想这就是你所需要的:

@mr = MediaRating.where("user_id = ?", session['user_credentials_id'])
@mr.each do |rating|
    @m = Media.where("id = ?", rating.media_id)
    @history << @m
end
@mr=mediaating.where(“user\u id=?”,会话['user\u credentials\u id'))
@每一位先生都做了评级|
@m=媒体。其中(“id=?”,评级。媒体\u id)

@history我认为您在@history数组中添加了错误的值。 如果您想要媒体评级历史记录,您应该正确添加媒体评级

@history << mr

@history我需要将
@m
中的值添加到历史数组中。我需要遍历每一个mediaarating来搜索媒体数据库。你能在每一个媒体的第二个页面中添加一个打印,看看它执行该主体的次数吗。添加一些数据点,这也会很有帮助。由于有100个媒体,请在迭代之前检查@m的大小。能否将第二个变量的名称分别更改为| media |?media包含什么?检查嵌套媒体后@m包含的内容。其中callre:嵌入
的ERB,除非/else
逻辑。当我进行代码审查或处理其他人的代码时,我不喜欢在代码中看到这种组合。我发现当我破译
中隐含的
而不是
,除非
,否则这个组合会使我的大脑降档,以弄清发生了什么。参见John Nunemaker的文章。MediaRating表中有3项内容(目前用于测试目的),但MediaRating表中有100项内容
@history
应该包含哪些内容<代码>媒体
媒体评级
萨尔索,感谢您提供关于除非声明的提示,仍在尝试学习rubyThanks以获得帮助!我在上面添加我的工作代码。。。我试图将数组传递到:集合中以获取部分..时遇到了一个问题。。就像我说的,我还在努力学习Ruby/Rails:)
@history << mr