1

Ruby on Rails の世界は初めてです。複数形ではなく単数形のコントローラ名を使用したい。

これが私が達成したいURLです。

http://foobar.com/admin/login

これが私が試したことです

rails g controller admin::login

アクセスしようとすると

http://foobar.com/admin/login

私は得る

uninitialized constant Admin::LoginsController

複数ではなく単数のコントローラーを作成するには?

4

2 に答える 2

1

Rails の規約に反するときはいつでも、最初に自問しなければならないことは、なぜそのようにしているのかということです。ログイン機能を作成する場合は、管理者/ユーザー コントローラーとセッション コントローラーが必要です。ネストされたリソースとカスタム ルートを使用して URL /admin/login/ を作成することはできますが、セッション コントローラーにロジックを含めることができます。

しかし、何らかの理由でそれを本当に変更する必要がある場合は、このタイプの手法を使用してそれを行うことができます: rails3 の model-name のデフォルトのpluralizeをオーバーライドします

于 2012-07-05T12:54:40.480 に答える
1

最初に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を参照してください。

于 2012-07-05T12:55:05.707 に答える