acts_as_taggable_on tag_cloud抛出未定义的方法"空?"对于 nil:NilClass



我有点粘在创建一个tag_cloud。我试着像acts_as_taggable_on文档那样做。你可以在这里找到:https://github.com/mbleigh/acts-as-taggable-on(向下滚动到"标签云计算")

My post helper:

module PostHelper
    include ActsAsTaggableOn::TagsHelper
end 

My post controller:

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

我在这里对文档所做的唯一改变就是让它显示20个最流行的标签。

我的帖子索引视图:

#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

和我收到以下错误:undefined method 'empty?' for 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问题的解决方案:如何显示标记云从作为标记在一个索引页上的Ruby On Rails 3.2.7?

我觉得这与我使用rails 4有关,但我不确定。

欢迎任何建议!

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

像这样在你的post_controller中添加一个before过滤器

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 %>

现在一切都在我的应用程序上工作。我希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新