使用 acts_as_taggable 时如何限制 tag_counts 项
How to limit tag_counts items when using acts_as_taggable
我在我的播客页面上使用“acts_as_taggable_on”gem。
tag_counts
显示所有标签,使用此 HAML 代码:
#tag_cloud
%h3
= raw Podcast.tag_counts.sort{ |x, y| x.name.upcase <=> y.name.upcase }.map{ |p| link_to p.name, podcasts_path(tag: p.name), remote: true}.join(' ')
我认为它会显示混乱,因为将不断创建标签。我只想显示一行,如果标签在该行上方,将显示一个按钮,访问者可以单击它以附加所有标签。
有什么方法可以限制“acts_as_taggable”中带有 tag_counts
的项目吗?
只需在排序、映射、然后连接的行中使用 first()
:
Podcast.tag_counts.sort { ... }.map { ... }.join(' ')
第一部分 returns 和 Array
和 Array#first
将结果“限制”为 10,在本例中:
Podcast.tag_counts.sort { ... }.map { ... }.first(10).join(' ')
在你的代码中,一行非常长的代码很笨重,你应该重新组织或分解它。
该代码不属于视图,您应该在您的 Podcast class 中编写一个 class 方法,调用可能类似于 get_tag_cloud
的方法,并让 return您希望在视图中显示的结果。
当然,您可以限制 returned 的记录数,但您希望根据什么逻辑来限制?
你可以这样做:
class Podcast < ApplicationRecord
def self.get_tag_cloud
tag_counts.limit(20).sort{ |x, y| x.name.upcase <=> y.name.upcase }.map{ |p| link_to p.name, podcasts_path(tag: p.name), remote: true}.join(' ')
end
#...
end
那么你的观点就变成了:
= raw Podcast.get_tag_cloud
但我真的不认为那是你想要的。你如何确定哪些标签应该显示,哪些应该被忽略,如果一个标签总是被省略那么允许这个标签有什么意义?
您需要先理清自己的业务逻辑,才能提供更简洁的答案。
你真的需要问一个不同的问题。
我在我的播客页面上使用“acts_as_taggable_on”gem。
tag_counts
显示所有标签,使用此 HAML 代码:
#tag_cloud
%h3
= raw Podcast.tag_counts.sort{ |x, y| x.name.upcase <=> y.name.upcase }.map{ |p| link_to p.name, podcasts_path(tag: p.name), remote: true}.join(' ')
我认为它会显示混乱,因为将不断创建标签。我只想显示一行,如果标签在该行上方,将显示一个按钮,访问者可以单击它以附加所有标签。
有什么方法可以限制“acts_as_taggable”中带有 tag_counts
的项目吗?
只需在排序、映射、然后连接的行中使用 first()
:
Podcast.tag_counts.sort { ... }.map { ... }.join(' ')
第一部分 returns 和 Array
和 Array#first
将结果“限制”为 10,在本例中:
Podcast.tag_counts.sort { ... }.map { ... }.first(10).join(' ')
在你的代码中,一行非常长的代码很笨重,你应该重新组织或分解它。
该代码不属于视图,您应该在您的 Podcast class 中编写一个 class 方法,调用可能类似于 get_tag_cloud
的方法,并让 return您希望在视图中显示的结果。
当然,您可以限制 returned 的记录数,但您希望根据什么逻辑来限制?
你可以这样做:
class Podcast < ApplicationRecord
def self.get_tag_cloud
tag_counts.limit(20).sort{ |x, y| x.name.upcase <=> y.name.upcase }.map{ |p| link_to p.name, podcasts_path(tag: p.name), remote: true}.join(' ')
end
#...
end
那么你的观点就变成了:
= raw Podcast.get_tag_cloud
但我真的不认为那是你想要的。你如何确定哪些标签应该显示,哪些应该被忽略,如果一个标签总是被省略那么允许这个标签有什么意义?
您需要先理清自己的业务逻辑,才能提供更简洁的答案。
你真的需要问一个不同的问题。