繁体   English   中英

Ruby 1.8.7中的NoMethodError

[英]NoMethodError in Ruby 1.8.7

Ive开始研究名为Shapado(http://shapado.com)的应用程序,该应用程序在Ruby上运行且后台有mongo数据库。 我尝试将一些数据添加到数据库时,出现以下错误。 我已附上我认为可能是源文件的所有相关文件。

错误

Processing QuestionsController#tags_for_autocomplete to js (for 93.97.246.67 at 2011-03-31 10:02:00) [GET]
  Parameters: {"tag"=>"backup"}

NoMethodError (undefined method `find_tags' for #<Array:0x7f24f1032448>):
  /var/lib/gems/1.8/gems/mongo_mapper-0.8.6/lib/mongo_mapper/plugins/associations/proxy.rb:109:in `send'
  /var/lib/gems/1.8/gems/mongo_mapper-0.8.6/lib/mongo_mapper/plugins/associations/proxy.rb:109:in `method_missing'
  /var/lib/gems/1.8/gems/mongo_mapper-0.8.6/lib/mongo_mapper/plugins/dynamic_querying.rb:37:in `method_missing'
  /var/lib/gems/1.8/gems/mongo_mapper-0.8.6/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb:76:in `method_missing'
  app/controllers/questions_controller.rb:184:in `tags_for_autocomplete'
  app/controllers/questions_controller.rb:180:in `tags_for_autocomplete'
  compass (0.10.5) lib/compass/app_integration/rails/actionpack2/action_controller.rb:7:in `process'
  warden (1.0.3) lib/warden/manager.rb:35:in `call'
  warden (1.0.3) lib/warden/manager.rb:35:in `call'
  warden (1.0.3) lib/warden/manager.rb:34:in `catch'
  warden (1.0.3) lib/warden/manager.rb:34:in `call'
  haml (3.0.25) lib/sass/plugin/rack.rb:41:in `call'
  /var/lib/gems/1.8/gems/mongomapper_ext-0.5.0/lib/mongomapper_ext/file_server.rb:17:in `call'
  app/middlewares/dynamic_domain.rb:17:in `call'
  app/middlewares/mongo_mapper_middleware.rb:24:in `call'
  /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'

QuestionsController.rb中的tags_for_autocomplete方法

def tags_for_autocomplete   
    respond_to do |format|  
      format.js do  
        result = [] 
        if q = params[:tag] 
          result = current_group.questions.find_tags(/^#{Regexp.escape(q.downcase)}/i,  
                                      :group_id => current_group.id,    
                                      :banned => false) 
        end     
        results = result.map do |t| 
          {:caption => "#{t["name"]} (#{t["count"].to_i})", :value => t["name"]}    
        end 
        # if no results, show default tags  
        if results.empty?   
          results = current_group.default_tags.map  {|tag|{:value=> tag, :caption => tag}}  
        end 
        render :json => results 
      end   
    end 

/var/lib/gems/1.8/gems/mongo_mapper-0.8.6/lib/mongo_mapper/plugins/associations/proxy.rb:109

protected
  def method_missing(method, *args, &block)
    if load_target
      target.send(method, *args, &block)
    end
  end

在代码的2个位置中,将“ current_group.questions.find_tags”替换为“ Question.find_tags”。

如此处所述: http : //shapado.com/questions/what-is-the-cause-of-the-nomethoderror-when-using-the-search-box-on-the-tags-page

这似乎为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM