gpt4 book ai didi

ruby-on-rails - acts_as_taggable_on tag_cloud 抛出未定义的方法 `empty?' 为 nil :NilClass

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:29 26 4
gpt4 key购买 nike

我有点卡在创建 tag_cloud 上了。我试着像 acts_as_taggable_on 文档那样做。您可以在这里找到它:https://github.com/mbleigh/acts-as-taggable-on (向下滚动到“标签云计算”。)

我的帖子助手:

module PostHelper
include ActsAsTaggableOn::TagsHelper
end

我的帖子 Controller :

def tag_cloud
@tags = Post.tag_counts_on(:tags).order('count desc').limit(20)
end

我在此处对文档所做的唯一更改是获取它,以便显示 20 个最流行的标签。

我的帖子索引 View :

#alltags
-tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class|
=link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class

我收到以下错误:未定义方法“空?”对于 nil:NilClass

#alltags
-tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class|
=link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class

错误页面中红色突出显示的是这一行:-tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class|

我真的不明白自己做错了什么,因为我完全按照文档进行操作,而且在互联网上搜索似乎也无济于事。我找到了一个解决方案,但我真的不想那样做,我觉得必须有另一种更好的方法。这是这个 stackoverflow 问题的解决方案:How to display a tag cloud from Acts as Taggable On on an index page in Ruby on Rails 3.2.7?

感觉和我用rails 4有关系,但不确定。

欢迎任何建议!提前致谢。

最佳答案

我遇到了同样的问题,这对我有用,我希望它对你也有用。

像这样在你的 post_controller 中添加一个前置过滤器。

class PostsController < ApplicationController
...
before_action :tag_cloud
...
def tag_cloud
@tags = Post.tag_counts_on(:tags).order('count desc').limit(20)
end
...
end

这样做之后,我在这一行中也遇到了路由错误:

link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class

我不得不像这样更改行:

<%= link_to tag.name, tag_path(tag.name), :class => css_class %>

现在它在我的应用程序上运行的一切。我希望这能帮到您。

关于ruby-on-rails - acts_as_taggable_on tag_cloud 抛出未定义的方法 `empty?' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com