2014-06-24 52 views
0

問題 - 未定義的方法' - 」爲‘書籍,孩子’:字符串未定義的方法' - 「爲‘書籍,孩子’:字符串

的‘acts_as_taggable_on_steroids’沒有維持一段時間了。它以前工作得很好,直到最近。現在,當我嘗試創建或更新標籤,我得到一個錯誤信息 - > 未定義的方法' - 」爲 「書籍,孩子」:字符串

    --- Codings ---- 

acts_as_taggable.rb

1. module ActiveRecord #:nodoc: 
    2. module Acts #:nodoc: 
    3. module Taggable #:nodoc: 
    4. def self.included(base) 
    5. base.extend(ClassMethods) 
    6. end 


    7. module ClassMethods 

    8. def acts_as_taggable 
    9. has_many :taggings, :as => :taggable, :dependent => :destroy 
    10. has_many :tags, :through => :taggings 

    11. before_save :save_cached_tag_list 

    12. after_create :save_tags 
    13. after_update :save_tags 

    14. include ActiveRecord::Acts::Taggable::InstanceMethods 
    15. extend ActiveRecord::Acts::Taggable::SingletonMethods 

    16. alias_method_chain :reload, :tag_list 

: :::::::::::::::::::::::

17. def save_tags 
    18.  return unless @tag_list 

    19.  new_tag_names = @tag_list - tags.map(&:name) 
    20. old_tags = tags.reject { |tag| @tag_list.include?(tag.name) } 

    21. self.class.transaction do 
    22. if old_tags.any? 
    23. taggings.find(:all, :conditions => ["tag_id IN (?)", 
    24. old_tags.map(&:id)]).each(&:destroy) 
    25.  taggings.reset 
    26. end 

    27. new_tag_names.each do |new_tag_name| 
    28. tags << Tag.find_or_create_by_name(new_tag_name) 
    29. end 

    30. end 

    31. true 
    32. end 
    33. end 

注:該生產線19引起的問題!

tag.rb

1. class Tag < ActiveRecord::Base 
    2. attr_accessible :name 
    3. has_many :taggings, :dependent => :destroy 
    4. validates :name, :presence=>true 
    5. validates_uniqueness_of :name 
    6. def self.find_or_create_by_name(name) 
    7. Tag.where(:name=>name).first_or_create do |tag| 
    8. tag.name = name 
    9. end 
    10. end 

任何幫助將是appreciated.Thank你。

回答

0

其中是@tag_list創建?看來,它曾經是一個數組,現在如果你想速戰速決,你可以19行改成這樣是一個字符串

new_tag_names = @tag_list.split(', ') - tags.map(&:name) 
+0

我這樣做之前,但它沒有工作:( – MBJH

+0

在另一個地方或同一個地方做了錯誤嗎?可能你可以改變創建'@ tag_list'的方式,這樣就可以創建一個數組 - 如果你在源代碼中改變它,你應該沒問題。 – dax

+0

我會盡力去做謝謝你 – MBJH

相關問題