2011-03-31 42 views
1

现在我有这个在我的视频节目的看法:如何只显示独特的主题?

<% @video.topics.each do |topic| %> 
    <%= topic.name %> 
<% end %> 

问题是,如果视频已经有两个相同主题相关联,它出现了两次的话题。我如何解决这个问题,以便它只显示独特的主题?

@video.topics.uniq.each do |topic| 
+0

当视频与两个主题相关联时,数据是否被认为有效?你可以在写面上写一些东西来防止嘟嘟吗? – Larsenal 2011-03-31 22:15:23

+0

是的我还没有验证...我应该为此执行它们吗?我不想让用户通过添加一个dup来遇到错误...只是为了让它无声无息地 – 2011-03-31 22:27:55

回答

4

虽然你应该在你的模型(S)的一些验证,以防止这种情况发生,你可以主题的阵列上调用#uniq主题结果。这可以通过find.group或Ruby group_by命令来完成。我认为这应该适合你。

+0

是的我还没有验证...我应该为它实现它们还是只使用#uniq?我不希望用户通过添加一个dup来遇到错误......只是为了让它无声无息地失败 – 2011-03-31 22:28:18

+0

@Justin:向你的模型添加一些验证和清理,用'uniq'过滤只是掩盖了一个潜在的问题。 – 2011-03-31 23:31:58

+0

是的,绝对可以为你的模型添加验证!如果你真的希望这会为你的用户“默默地失败”,只要在数据库插入上做一个条件......像'@video.topics <<主题,除非@ video.topics.include?(topic)' - 这样他们认为它工作,并且你可以避免重复的数据库条目。 – 2011-04-01 03:47:19

0

我认为你可以使用组群: