我正在使用Ruby on Rails 3.0.7,我希望在给定类名的情况下检索控制器名称。也就是说,我有
Articles::Category
我想检索
articles/categories
我想在与Articles::Categories
控制器无关的视图文件中检索控制器名称。
我该怎么做(可能使用一些Ruby on Rails核心方法)?
答案 0 :(得分:10)
Articles::Category.name.underscore.pluralize
=> "articles/categories"
正如其他许多人所说,没有特别的方法。但是只要你遵循Rails约定,这种方法就会带你走远。
答案 1 :(得分:4)
要获取控制器名称,请在视图中说明:
<%= controller.controller_name %>
如果您有一个名为user的用户对象,请获取类的名称,例如User;
user.class.to_s
除此之外,我不认为控制器和模型之间存在关联,它可以从类名称中获取控制器名称,因为它们是不同的东西。您可以创建像{:controller =&gt;这样的哈希值。 'class_name'}并自己绘制。
答案 2 :(得分:1)
Articles::Categories.name.underscore #=> articles/categories
它强调了以下内容:
RailsAdmin::ApplicationHelper.name.underscore #=> rails_admin/application_helper
答案 3 :(得分:0)
假设你的确意味着Articles::CategoriesController
,那么Articles::CategoriesController.controller_path
会给你你想要的东西。
更新问题是,鉴于Rails模型的名称,您如何获得相关控制器的名称?
这个问题的答案是,你做不到。从型号名称到控制器名称没有一对一的映射。 User
模型可以由users_controller.rb
和/或admin/users_controller.rb
控制,或者根本没有关联的控制器。您当然可以根据Rails惯例猜测一些可能的可能性,但您无法知道。
答案 4 :(得分:0)
而不是underscore.pluralize
只使用tableize
:
ActiveRecord::Base.name.tableize
=> "active_record/bases"