2012-07-05 86 views
1

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

这是我想要实现的网址。

http://foobar.com/admin/login

这是我尝试

rails g controller admin::login 

当我尝试访问

http://foobar.com/admin/login 

我得到

uninitialized constant Admin::LoginsController 

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

回答

1

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

但是如果你真的需要改变这个,出于某种原因,你可以使用这种类型的技术:override default pluralize for model-name in rails3

1

你应该首先看rails namespaces。例如:

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

它会产生带有admin前缀的路由。 所以,如果你想单一的控制器,你应该更深入探索inflectors。检查以下链接:

例如,下面几行添加到您的config/initializers/inflections.rb

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

一般而言,您应用户usersession控制器login行动, 当然。例如,看看devise gem了解更多信息和用法。