Rails控制器名称

时间:2012-07-05 12:46:46

标签: ruby-on-rails controller routes

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

这是我想要实现的网址。

http://foobar.com/admin/login

这是我尝试的内容

rails g controller admin::login

当我尝试访问

http://foobar.com/admin/login

我得到了

uninitialized constant Admin::LoginsController

如何创建奇异的控制器而不是复数?

2 个答案:

答案 0 :(得分:1)

每当你反对Rails惯例时,你要问自己的第一件事是你为什么这样做?如果要创建登录功能,则应具有管理员/用户控制器和会话控制器。您仍然可以使用嵌套资源和自定义路由创建url / admin / login /,但在会话控制器中具有逻辑。

但如果你真的需要因某种原因改变它,你可以使用这种技术来做到这一点:override default pluralize for model-name in rails3

答案 1 :(得分:1)

您应首先查看rails namespaces。例如:

namespace :admin do
  resources :posts, :comments
  match 'login' => 'controller#action'
end

它将生成admin前缀的路由。 因此,如果你想要单一的控制器,你应该深入了解inflector。请查看以下链接:

例如,将以下行添加到config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "login"
end

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