Ruby on rails 通过对象循环更改每个循环的顺序

Ruby on rails 通过对象循环更改每个循环的顺序,ruby-on-rails,Ruby On Rails,我有一个对象(作者)列表,并希望在它们之间循环打印一个属性(名称),其中一个属性(名称)以粗体显示,然后是每个循环的其余名称,具有以下输出: 名称A,名称B,名称C 名称B,名称A,名称C 名称C,名称A,名称B 我想我可以用来做这件事,除了,但是这个代码: titles.each do |t| ... list_without_current_name = t.authors.except(t.author) ... end 不删除作者,但给我其他人的完整列表只需将a.auth

我有一个对象(作者)列表,并希望在它们之间循环打印一个属性(名称),其中一个属性(名称)以粗体显示,然后是每个循环的其余名称,具有以下输出:

名称A,名称B,名称C

名称B,名称A,名称C

名称C,名称A,名称B

我想我可以用
来做这件事,除了
,但是这个代码:

titles.each do |t| 
  ...
  list_without_current_name = t.authors.except(t.author)
  ...
end

不删除作者,但给我其他人的完整列表

只需将
a.author
更改为
a

authors.each do |a|
  print a
  authors.except(a).each do |b|
    print ", #{b}"
  end
  print "\n"
end

只需将
a.author
更改为
a

authors.each do |a|
  print a
  authors.except(a).each do |b|
    print ", #{b}"
  end
  print "\n"
end
您可以像这样使用
Array#permutation
方法

authors = ['Mark Twain', 'George Orwell', 'Ernest Hemingway'] 
authors.permutation.each do |p|
  p.each_with_index {|author, i| i == 0 ? print_bold(author) : print_regular(author)}
end
您可以像这样使用
Array#permutation
方法

authors = ['Mark Twain', 'George Orwell', 'Ernest Hemingway'] 
authors.permutation.each do |p|
  p.each_with_index {|author, i| i == 0 ? print_bold(author) : print_regular(author)}
end

是否要在打印后删除作者?否,每次循环都应以粗体输出第一个作者,并以随机顺序输出该循环的其他作者?其他作者姓名应按字母顺序排列。我也编辑了我的问题,因为我忘记了一个重要的事实,那就是它是一个关联…所以,你需要的是为每个标题列出作者列表,每个列表都有不同的作者?你想在作者打印出来后删除它吗?不,每次循环都应该以粗体显示第一个作者,并以随机顺序输出该循环的其他作者?其他作者的姓名应按字母顺序。我也编辑了我的问题,因为我忘记了一个重要的事实,那就是它是一个关联…所以,你需要的是为每个标题列出作者列表,每个列表都有不同的作者?对不起,我编辑了这个问题。这是一个关联模型,在我“简化”时出错了对不起,我编辑了这个问题。这是一个关联模型,在我“简化”时出了问题