I am currently getting the following error on my post model which is under act_as_taggable_on for tags and channels.
undefined local variable or method `tag_list_on' for #
<ActiveRecord::Relation:0x007f9864675b48>
I seems that rails cannot detect the existence of tag_list_on or set_tag_list_on methods; however, it does detect the tagged_with method, whose source is located in the exact same module as the other files.
RubyMine can detect the existence of all of these methods fine btw.
Here is the section of code that I’m performing all of these operations on.
@posts = Post.tagged_with(params[:tags]).paginate(:page => params[:page]|| 1, :per_page => 20)
user_tags = @posts.tag_list_on(:tags)
custom_tags = user_tags - params[:tags]
@posts.set_tag_list_on(:customs, custom_tags)
@tags = @posts.tag_counts_on(:customs, :order => "count desc").limit(10)
@channels = @posts.tag_counts_on(:channels, :order => "count desc")
tagged_withis a class method ofPost, added by theacts_as_taggable_ongem.@postsin your code is an instance ofActiveRecord::Relation, not thePostclass itself or any instance of it.There is no
tag_list_oninstance method inActiveRecord::Relation, hence the error.tagged_withsays it returnstag_list_onandset_tag_list_onare instance methods of thePostclass, added by theacts_as_taggablegem.You need to call
tag_list_onandset_tag_list_onfor each instance of@posts