-4
してください。は、私は次のようなアーキテクチャを持つRubyプロジェクトを持って継承された機能の動的
class Controller
def get_directories
Dir.chdir(File.dirname(__FILE__) + "/")
Dir.glob('*').select { |f| File.directory? f }
end
end
私の子供コントローラー:私は、親コントローラのメソッド持っている私の理解から
require_relative '../controller'
class City1Controller < Controller
end
と
require_relative '../controller'
class City2Controller < Controller
end
を、この方法は、現在の作業ディレクトリを見て、返します。そのディレクトリ内にあるフォルダの配列。
子コントローラは、get_directoriesが子ディレクトリのローカルになるようにこの関数を継承すると予想しましたが、親ディレクトリのフォルダを表示しています。
何が起こっているのかです:
controller.get_directories => city1 city2
city1_controller.get_directories => city1 city2
city2_controller.get_directories => city1 city2
私は起こるしたいものです。
controller.get_directories => city1 city2
city1_controller.get_directories => monument1 monument2
city2_controller.get_directories => monument3 monument4
私は(したがって、親の定義をオーバーライド)各子コントローラにまったく同じ方法を繰り返した場合、それが動作私がしたい方法。しかし、相続が私たちを救うと考えられているのはそうではありませんか?
メソッド自体、継承の仕組み、または使用方法に問題はありますか?
直接ここにすべてのものを投稿
1つのオプションは、このような方法に
__FILE__
を渡すかもしれません。あなたの質問の一部は外部サイトに依存してはいけません。コードをお持ちの場合は、画像ではなくテキストとしてここに投稿してください。 – Carcigenicate申し訳ありませんが、私のテキストstackoverflowのどの部分が好きではなかった(コードについてのエラーを与えた)トラブルシューティングをしなければならなかった –
問題はどのようにそれを使用しています。 '__FILE__'はメソッドではないので、メソッドのような動作を期待してはいけません。 –