Ruby on Rails の世界は初めてです。複数形ではなく単数形のコントローラ名を使用したい。
これが私が達成したいURLです。
これが私が試したことです
rails g controller admin::login
アクセスしようとすると
http://foobar.com/admin/login
私は得る
uninitialized constant Admin::LoginsController
複数ではなく単数のコントローラーを作成するには?
Ruby on Rails の世界は初めてです。複数形ではなく単数形のコントローラ名を使用したい。
これが私が達成したいURLです。
これが私が試したことです
rails g controller admin::login
アクセスしようとすると
http://foobar.com/admin/login
私は得る
uninitialized constant Admin::LoginsController
複数ではなく単数のコントローラーを作成するには?
Rails の規約に反するときはいつでも、最初に自問しなければならないことは、なぜそのようにしているのかということです。ログイン機能を作成する場合は、管理者/ユーザー コントローラーとセッション コントローラーが必要です。ネストされたリソースとカスタム ルートを使用して URL /admin/login/ を作成することはできますが、セッション コントローラーにロジックを含めることができます。
しかし、何らかの理由でそれを本当に変更する必要がある場合は、このタイプの手法を使用してそれを行うことができます: rails3 の model-name のデフォルトのpluralizeをオーバーライドします。
最初にRails 名前空間を確認する必要があります。例えば:
namespace :admin do
resources :posts, :comments
match 'login' => 'controller#action'
end
admin
プレフィックス付きのルートを生成します。したがって、単一のコントローラーが必要な場合は、インフレクターをさらに深く掘り下げる必要があります。次のリンクを確認してください。
たとえば、次の行を に追加しますconfig/initializers/inflections.rb
。
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable "login"
end
もちろん、一般に、アクションにはユーザーuser
またはsession
コントローラーを使用する必要があります。詳細と使用法についてはlogin
、たとえばdevise gemを参照してください。