Ruby on Rails 2.3.8:有没有办法从模型中获取控制器名称?

时间:2011-08-08 14:08:46

标签: ruby-on-rails ruby

比如说,我说我有一个名为Vehicle的模型 是否有任何Vehicle.controller等命令会返回:vehicles_controller"vehicles_controller"

3 个答案:

答案 0 :(得分:5)

不是我知道的,但很容易创建这样的帮手:

def controllerize(model)
  "#{model.name.tableize}_controller"
end

更好的问题是你为什么要这样做?听起来有点像代码味道 - 你的模型没有很多理由知道你的控制器。

答案 1 :(得分:2)

为什么呢?它是确定路径而不是模型的路线。

让你的模型了解路线毫无意义。模型用于处理业务逻辑和数据。路由是控制器的域。

如果您的routes.rb中的路由定义为resource :vehicles,那么您可以vehicle_pathvehicles_path等形式向您提供路由...以找出您刚刚从应用程序根文件夹中的命令行运行rake routes的路由。

答案 2 :(得分:0)

这只是一个命名约定和良好实践,可以免费获得一些东西,因为Rails方式,用户模型的控制器通常称为UsersController。如果你遵守约定,那么你可以编写一个方法来为你做。否则,答案是:“不,对不起”。