当我试图从一个控制器类访问一个助手模块中定义的方法时,我得到了NoMethodError分.我的Rails应用程序使用带有:all符号的helper类方法,如下所示:

class ApplicationController < ActionController::Base
  helper :all
  .
  .
end

我的理解是,这将使我的所有控制器类自动包含app/helpers目录中的所有helper模块,因此将所有方法混合到控制器中.对吗?

如果我在控制器中显式地使用helper模块,那么一切都正常工作.

推荐答案

helper :all使视图中的所有辅助对象(是的,所有辅助对象)都可用,但不将它们包含在控制器中.

如果您希望在助手和控制器之间共享一些代码,这不是很理想,因为助手是UI代码,控制器是控制器代码,那么您可以将助手包含在控制器中,或者创建一个单独的模块,并将其也包含在控制器和助手中.

Ruby-on-rails相关问答推荐

Rails 7.1中的覆盖脚手架控制器

Ubuntu Webhooks无法读取安装的正确RVM Ruby

使用ImportMaps将HighLightJS添加到rails 7.1

是否从已转换为字符串的数组中提取符号?

Rails 4 中的 null_session 和 reset_session 有什么区别?

Rails 和 jsonb 类型jsonb不存在

Ruby 地理定位Ruby /插件

如何在 YAML 中声明带有单引号和双引号的字符串?

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

Rspec:测试实例变量的赋值

基于 2 列定义唯一主键

如何在 Linux 上使用 Ruby 2.0 改进独角兽进程之间的内存共享

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

如何使用失败try 次数使设计可锁定

如何在 Rails 中测试助手?

反编译开发assets资源 管道

在 Rails 中,在特定时区创建特定时间(不是现在)的最佳方式是什么?

Ruby on Rails 3:通过 Rails 将数据流式传输到客户端

何时(如果)合并 ActiveRecord 迁移?

如何测试也定义为辅助方法的 ApplicationController 方法?