簡體   English   中英

未定義的方法“-”,用於“書籍,兒童”:字符串

[英]undefined method `-' for “books, children”:String

問題-未定義的方法“-”,用於“書籍,兒童”:字符串

“ acts_as_taggable_on_steroids”已經有一段時間沒有被維護了。 直到最近,它一直運轉良好。 現在,當我嘗試創建或更新標簽時,出現一條錯誤消息->未定義的方法“-”,用於“書籍,兒童”:字符串

                  --- Codings ----

actions_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

任何幫助將不勝感激。謝謝。

@tag_list在哪里創建? 似乎它曾經是一個數組,現在是一個字符串

如果要快速修復,可以將第19行更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM