1

我是 Ruby on Rails 世界的新手。我想使用单数控制器名称而不是复数。

这是我想要实现的网址。

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 中模型名称的默认复数

于 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

当然,通常您应该使用用户usersession控制器进行login操作。例如,查看devise gem以获取更多信息和用法。

于 2012-07-05T12:55:05.707 回答