根据RoR约定从类名中检索控制器名称

时间:2011-07-26 02:26:24

标签: ruby-on-rails ruby ruby-on-rails-3 controller naming-conventions

我正在使用Ruby on Rails 3.0.9,我想从类名建立控制器名称,以及遵循RoR命名约定。例如,如果我有Articles::Comment类,我想检索articles/comments字符串。

也许它存在由开发人员创建的RoR方法来处理这些约定,但我不知道。

如何检索控制器名称,如上例所示?

1 个答案:

答案 0 :(得分:3)

您正在寻找下划线方法。 More info here

"Articles::Comment".underscore

或者,如果你自己有控制器类,那就是这样的:

Articles::Comment.name.underscore

修改

从路径开始,它们一次构建一个,即使命名它们也是如此。当你做这样的事情时:

map.resources :articles do |articles|
  articles.resources :comments
end

首先要做的是:

"articles". classify # which yields "Article" then rails is going to append "Controller" to it

然后它会得到“评论”并做同样的事情,但是这一条将在“/ articles”下被路由。 Rails没有命名空间内部资源,因此,控制器必须是CommentsController,而不是Articles :: CommentsController。

只有这样你才能清楚地命名一些东西,Rails会命名你的类:

map.namespace :admin do |admin|
  admin.resources :articles # will require controller "Admin::ArticlesController"
end

我希望现在更清楚了。