我只是对params:controller和controller.controller_name的正确用法感到好奇,因为我正在寻找一种方法来获取视图的当前控制器,但我不确定哪一个是正确的,我的意思是,使用这两种方法在性能上是否有所不同。
发布于 2016-03-17 08:52:23
至少在Rails 4.2.5上,controller_name和params:controller是不等价的。
如果您在app/controllers的子目录中有控制器,则controller_name不包括该目录。例如,假设您有应用程序/控制器/管理/用户_控制器.rb(类Admin::UsersController),您将获得以下内容:
params[:controller] => 'admin/users'
controller_name => 'users'以下是actionpack-4.2.5中的方法定义:
def self.controller_name
@controller_name ||= name.demodulize.sub(/Controller$/, '').underscore
endname.demodulize是这里的罪魁祸首。
发布于 2015-07-10 06:49:07
我想说在你的视图中使用controller_name会更好一些,因为你使用的是一个命名的助手,如果它要从Rails中删除,它会发出一个终止通知。params[:controller]与实现紧密耦合,而且不会。
https://stackoverflow.com/questions/31328948
复制相似问题