首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails params[:controller]与controller.controller_name

rails params[:controller]与controller.controller_name
EN

Stack Overflow用户
提问于 2015-07-10 05:56:25
回答 2查看 3.1K关注 0票数 0

我只是对params:controller和controller.controller_name的正确用法感到好奇,因为我正在寻找一种方法来获取视图的当前控制器,但我不确定哪一个是正确的,我的意思是,使用这两种方法在性能上是否有所不同。

EN

回答 2

Stack Overflow用户

发布于 2016-03-17 08:52:23

至少在Rails 4.2.5上,controller_name和params:controller是不等价的。

如果您在app/controllers的子目录中有控制器,则controller_name不包括该目录。例如,假设您有应用程序/控制器/管理/用户_控制器.rb(类Admin::UsersController),您将获得以下内容:

代码语言:javascript
复制
params[:controller] => 'admin/users'
controller_name => 'users'

以下是actionpack-4.2.5中的方法定义:

代码语言:javascript
复制
def self.controller_name
  @controller_name ||= name.demodulize.sub(/Controller$/, '').underscore
end

name.demodulize是这里的罪魁祸首。

票数 2
EN

Stack Overflow用户

发布于 2015-07-10 06:49:07

我想说在你的视图中使用controller_name会更好一些,因为你使用的是一个命名的助手,如果它要从Rails中删除,它会发出一个终止通知。params[:controller]与实现紧密耦合,而且不会。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31328948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档