9


2

ルーティングエラー:Rails 3の初期化されていない定数

次のようなヘルパークラスを含むファイルがあります。

app / classes / myfile.rb

Module mymodule
  class myclass
    # blah blah
  end
end

このクラスをコントローラーで使用したいので、次のように書きました。

require 'myfile'

class MyController < ApplicationController

  include mymodule

  def index
    mymodule::myclass.new
  end

end

コントローラのルートは次のように定義されます。

  match 'mycontroller', :to => 'mycontroller#index'

今、私が直面している奇妙な行動のために。 サーバー起動後の最初の実行で完全に正常に動作します。 しかし、ページを更新するか、URLに再度アクセスすると、次のエラーが表示されます。

Routing Error

uninitialized constant MyController::mymodule

私はエラーから何も解明することもできませんし、2回目以降のヒットでのみ機能しない理由を理解することもできません。 何が起こっていますか?

2 Answer


8


一般的に、Railsは以下を含むファイルを見るのが好きです:

module MyModule

「my_module.rb」という名前

モジュールは一般的に大文字です

また、MyModuleはMyControllerクラスの下にスコープされていると考えていますが、そうではありません。 あなたは試すことができます

include ::MyModule

トップレベルのスコープからアクセスします。

また、ロードパスにクラスディレクトリが含まれているかどうかもわかりません。そのため、最初にmyfile.rbファイルが自動ロードされない可能性があります。


2


「myfile.rb」をロードするために「myfile」を要求するように変更しましたが、現在は正常に動作します。 しかし、問題を解決したかどうかはわかりません。 何が起こっているのか分かりません。 誰かが私を悟らせることができますか?