2015-10-02 1 views
1

J'essaie d'utiliser la gemme acts_as_taggable dans mon projet Rails, et je ne sais pas si quelqu'un peut signaler ce que je fais de mal ou s'il y a un bogue dans le projet.acts_as_taggable_on: NoMethodError: méthode non définie `add '

J'ai signalé un problème au projet: https://github.com/mbleigh/acts-as-taggable-on/issues/688, mais personne n'a encore répondu.

Je ne peux pas utiliser les fonctionnalités de base de l'ajout de balises en utilisant par exemple: taglist.add("a") ou taglist.remove("a) ou balises définies à l'aide taglist = 'a', etc. Les méthodes ne semblent pas exister. J'utilise Ruby 2.2.3 et Rails 4.2.3. Mon Gemfile a:

gem 'acts-as-taggable-on', '~> 3.4' J'ai aussi essayé

gem 'acts-as-taggable-on', '~> 3.5' Dans mon modèle, j'ai:

class Space < ActiveRecord::Base 
    acts_as_taggable_on :skills 

de la console rails je peux faire ce qui suit:

> s = Space.first 
=> #<Space id: 1172, created_at: "2015-09-24 08:13:09", ...<many fields>... updated_at: "2015-09-24 08:13:09"> 

> s.skills 
    ActsAsTaggableOn::Tag Load (2.0ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND "taggings"."context" = $3 [["taggable_id", 1172], ["taggable_type", "Space"], ["context", "skills"]] 

=> #

> s.skills.add("a") 
NoMethodError: undefined method `add' for #  <ActiveRecord::Associations::CollectionProxy []> 
from /Users/n/.rvm/gems/[email protected]/gems/activerecord-4.2.3/lib/active_record/relation/delegation.rb:136:in `method_missing' 
from /Users/n/.rvm/gems/[email protected]/gems/activerecord-4.2.3/lib/active_record/relation/delegation.rb:99:in `method_missing' 
from (irb):3 
from /Users/n/.rvm/gems/[email protected]/gems/railties-4.2.3/lib/rails/commands/console.rb:110:in `start' 
from /Users/n/.rvm/gems/[email protected]/gems/railties-4.2.3/lib/rails/commands/console.rb:9:in `start' 
from /Users/n/.rvm/gems/[email protected]/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:68:in `console' 
from /Users/n/.rvm/gems/[email protected]/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
from /Users/n/.rvm/gems/[email protected]/gems/railties-4.2.3/lib/rails/commands.rb:17:in `<top (required)>' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `block in require' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in `load_dependency' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
from /Users/n/code/pop/poprails/bin/rails:8:in `<top (required)>' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:268:in `load' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:268:in `block in load' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in `load_dependency' 
from /Users/n/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:268:in `load' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/commands/rails.rb:6:in `call' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/command_wrapper.rb:38:in `call' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:183:in `block in serve' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:156:in `fork' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:156:in `serve' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:131:in `block in run' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:125:in `loop' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application.rb:125:in `run' 
from /Users/n/.rvm/gems/[email protected]/gems/spring-1.3.6/lib/spring/application/boot.rb:18:in `<top (required)>' 
from /Users/n/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
from /Users/n/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
from -e:1:in `<main>'2.2.3 :004 

Répondre

3

Il devrait être

> s = Space.first 
=> #<Space id: 1172, created_at: "2015-09-24 08:13:09", ...<many fields>... updated_at: "2015-09-24 08:13:09"> 

> s.skill_list.add("a") 

ou par une virgule

> s.skill_list.add("a,b,n,m) 

Puis

s.skill_list

il retournera tableau de

["a","b","n","m"] 
2

essayer

s.skills.where(name: "a").first_or_create 

ou

s.skill_list.add("a")