Hi All, I’m having trouble getting the acts-as-taggable-on gem’s results filtered correctly, and I think that the answer is straightforward for someone who knows what they are doing. So I’m hoping someone can help me.
I have two models: users and recipes. Recipes is the model that acts_as_taggable with two contexts.
class User < ActiveRecord::Base acts_as_tagger has_many :receipes end
class Recipe < ActiveRecord::Base acts_as_taggable acts_as_taggable_on :ingredients, :descriptions has_one :user end
module RecipesHelper include ActsAsTaggableOn::TagsHelper end
the controller - this is meant to show a tag cloud (@tags), and then if a tag is selected, the page reloads filtering out words based on the user and the tag
def index @user = current_user @tags = User.find_by_id(current_user).recipes.tag_counts_on(:ingredients) if params[:tag] @recipes = Recipe.tagged_with(params[:tag]) else @recipes = Recipe.where("user_id =?", @user) end end
The issue I’m having is that the results are filtered out by tag, but doesn’t take in consideration the user or the context. For example, if the tag is “chicken”, it will show the results whether the tag is an ingredients or descriptions tag, and it will show for all users.
I have tried to replace this line in the controller:
@recipes = Recipe.tagged_with(params[:tag])
with each, these variations to no avail:
(1) Filters the results by user, but doesn’t distinguish between ingredients or descriptions tag
@recipes = User.find_by_id(current_user).recipes.tagged_with(params[:tag])
undefined method "set_owner_tag_list_on" for #<ActiveRecord::Relation:0x42d9320>
@tagged_recipes = User.find_by_id(current_user).recipes.tagged_with(params[:tag]) @user.tag(@tagged_recipes, :with => (params[:tag]), :on => :ingredients)