こんにちは、次のように私はレールで3つのファイルを持っている: "アプリ/コントローラ/ listings_controller.rb"のRails: "NoMethodError:#のための未定義のメソッド` constructKDTree」<クラス:0x00000104b1f760>" そこ
class ListingsController < ApplicationController
def index
#Construct kd Tree in memory
@tree = Listing.constructKDTree;
@tree.inspect
end
に位置 1) APP /モデル/ listing.rbに位置
2)APP /モデル/ kd_tree.rbに位置
require 'kd_tree.rb'
class Listing < ActiveRecord::Base
def constructKDTree
@contents = self.all
@kdTree = KDTree.new(@contents)
end
3)
class KDTree
def initialize (db_listings)
'Initializing Tree'
end
end
は、今私はconstructKDTree
するための方法の実装をテストしようとしているので、私は私のレールコンソールに行き、次のコマンドを試してみました:
1.9.2-p290 :001 > @lc = ListingsController.new
=> #<ListingsController:0x00000104f3e288 @_routes=nil, @_action_has_layout=true, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil>
1.9.2-p290 :002 > @lc.index
しかし、私はこのエラーを取得する:私は
NoMethodError: undefined method `constructKDTree' for #<Class:0x00000104b1f760>
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.1/lib/active_record/dynamic_matchers.rb:50:in `method_missing'
from /Users/AM/Documents/RailsWS/cmdLineWS/Businesses/app/controllers/listings_controller.rb:20:in `index'
from (irb):2
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
何をしています違う?
こんにちはありがとう:
は、しかし、あなたがそこに持っているコードを、あなたはおそらく後者を行うと、クラスの新しいインスタンスを作成したい時に見ています。私はJavaの背景から来てRubyを学びます。ですから、クラスレベルのメソッドはJavaの静的メソッドに似ていますか? – banditKing
@banditKing:ええ、それはあなたが得ることができる最も近いです。 –