我有一个用于 Rails 应用程序的 Haml 模板,它在生产中始终会遇到此错误,但从未在开发中出现过。
我的模板是这样开始的:
= simple_form_for :foo, url: { action: :update }, method: :patch do |f|
= f.simple_fields_for :arr_field2 do |f_field_arr| -# create an array
= f.error_notification
.padded
- @foo.arr_field.each_with_index do |item, i|
.control-group
...
我得到的错误是:
NoMethodError: undefined method `-@' for "":String
错误消息声称问题出在模板的第 3 行,但是当我删除
= f.error_notification
错误仍然存在,并且仍然声称问题出在第 3 行。有没有人遇到过类似的事情?
为了提供一点上下文,@foo
存在(我已经检查过了),并且有一个字符串数组 (arr_field
)。表单的要点是让用户设置其他字段 (arr_field2
) 以匹配 arr_field
中的字段。
最佳答案
你打错了,就在那里:
= simple_form_for :foo, url: { action: :update }, method: :patch do |f|
= f.simple_fields_for :arr_field2 do |f_field_arr| -# create an array
^
# right here
这个破折号应该在注释符号之后,以免被 Ruby 解释:
= simple_form_for :foo, url: { action: :update }, method: :patch do |f|
= f.simple_fields_for :arr_field2 do |f_field_arr| #- create an array
关于ruby-on-rails - Rails/Haml 错误 : undefined method `-@' for "":String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898842/