私はモデルOrganization
を持っています。私がAdmin::Organization::ActivitiesController
という名前のコントローラを持ってapp/models/organization.rb
Rails NameError初期化されていない定数(モデルと名前空間の衝突)
class Organization < ActiveRecord::Base
... code
end
で定義されています。 app/controllers/admin/organization/activities_controller.rb
で定義されています。その中にインデックスアクションがあります。何らかの理由で、それはコントローラクラスの内部組織モデルをスコープだため
NameError in Admin::Organization::ActivitiesController#index
uninitialized constant Admin::Organization::ActivitiesController::Organization
:私は上記のindexアクションを実行するとき
class Admin::Organization::ActivitiesController < ApplicationController
def index
@organization = Organization.new
... more code
end
end
は、私は、次のメッセージが表示されます。 index
メソッドを変更して使用する場合は、
@organization = ::Organization.new
となります。
この現象は、コンソールに表示されないようです。インデックスメソッドでbinding.pry
コールを追加すると、コマンドラインからOrganization.new
または::Organization.new
を呼び出すことができます。
アプリ内の他のすべてのモデルは正常に動作し、この奇妙な動作はありません。私は元々コードを書いていないので、何が起こっているのか把握しようとしています。
routes.rbファイルの名前空間と何か関係があると思います。 organization
という単語を使用する名前空間があります。試験として
namespace :admin do
namespace :organization
resources :activities
end
end
、私は:organizations
に名前空間を変更し、私は物事が::
を必要とせずに仕事を得ることができました。物やルート設定を構成する方法があるのでというモデルに干渉しない:organization
という名前空間を持つことができますか?
が生成されます、
をルートを設定あなたがいることがわかり意味ですかアプリケーションを起動しようとしたとき、または 'ActivitiesController#index'メソッドを呼び出すときにエラーが発生しましたか? – seddy
'ActivitiesController#index'アクションが実行されると、ブレークします。私は質問を更新しました。 – CodeSmith