我有一些代码,我循环遍历数据,我不得不多次编写相同的代码,我想“干掉它”。
以下是一些代码:
<%= raw @artist["albums"]["Albums"].uniq_by{ |a| a["Genre"] }.collect { |album| link_to album["Genre"], genre_path(CGI::escape(album["Genre"])) unless album["Artist"]["Name"] != @term }.join(" ") %>
我不得不多次复制的部分是结尾unless album["Artist"]["Name"] != @term
无论如何都要过滤数组比每次写这个除非语句更好吗?
希望有意义
我可以删除uniq_by
<%= raw @artist["albums"]["Albums"].collect { |album| link_to album["Genre"], genre_path(CGI::escape(album["Genre"])) unless album["Artist"]["Name"] != @term }.uniq.join(" ") %>
答案 0 :(得分:0)
看起来您正在视图中模拟GROUP BY查询。特别是您的@term
子句看起来像WHERE
条件或连接约束。
如果您有相册模型,我会添加一个或多个代表查询部分的named scopes,然后在视图中将它们链接在一起(最后使用collect
格式链接标签。)