【发布时间】:2016-04-29 09:28:17
【问题描述】:
我正在尝试从我的项目中的 haml 视图访问辅助变量。我在rails-root/app/helpers/table_field_helper.rb 中定义了助手:
module TableFieldHelper
def table_display_fields
MORE_COMPLICATED_TABLE_DISPLAY_FIELDS #some array defined elsewhere in the file
end
...
end
并尝试在 index.html.haml 中迭代 table_display_fields:
...
%tr
%th
- table_display_fields.each do |field|
%th= field
...
我收到一个错误:undefined local variable or method 'table_display_fields'
是什么导致了这个错误?为什么我无法访问 TableFieldHelper 中的定义?我是 Ruby/Rails 的新手,但我假设所有帮助程序都隐式包含在视图/布局文件中,而且我读过的任何内容都不会表明我必须做任何额外的事情才能使它们一起工作。谢谢!
【问题讨论】:
-
根据您的 Rails 版本,控制器可能只包含具有匹配名称的帮助文件,如此处所述api.rubyonrails.org/classes/ActionController/Helpers.html
-
这也会影响视图吗?我没有看到任何与视图直接相关的东西,只是控制器。编辑:我正在使用带有 rails 4.0.9 的 jrails,所以我不认为这是基于 stackoverflow.com/questions/1179865/… 所写内容的问题
-
视图只能访问控制器提供的内容
-
include TableFieldHelper在控制器中 -
include ::TableFieldHelper,正如@Michal Szyndel 所说,只有名称与控制器名称匹配的模块才会自动包含
标签: ruby-on-rails ruby haml helper