我是 Ruby on Rails 世界的新手。我想使用单数控制器名称而不是复数。
这是我想要实现的网址。
这是我尝试的
rails g controller admin::login
当我尝试访问
http://foobar.com/admin/login
我明白了
uninitialized constant Admin::LoginsController
如何创建单数控制器而不是复数?
我是 Ruby on Rails 世界的新手。我想使用单数控制器名称而不是复数。
这是我想要实现的网址。
这是我尝试的
rails g controller admin::login
当我尝试访问
http://foobar.com/admin/login
我明白了
uninitialized constant Admin::LoginsController
如何创建单数控制器而不是复数?
每当您违反 Rails 约定时,您首先要问自己的是为什么要那样做?如果您正在创建登录功能,您应该有一个管理员/用户控制器和一个会话控制器。您仍然可以使用嵌套资源和自定义路由创建 url /admin/login/,但在会话控制器中有逻辑。
但是,如果您出于某种原因确实需要更改它,您可以使用这种技术来做到这一点:覆盖 rails3 中模型名称的默认复数。
您应该首先查看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以获取更多信息和用法。