【问题标题】:Rails/Haml error: undefined method `-@' for "":StringRails/Haml 错误:未定义方法 `-@' for "":String
【发布时间】:2013-09-19 15:26:37
【问题描述】:

我有一个用于 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 中的字段。

【问题讨论】:

  • 尝试删除上面#行之前的'-'符号

标签: ruby-on-rails ruby haml


【解决方案1】:

你有一个错字,就在那里:

= 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

【讨论】:

  • 非常感谢!我误解了破折号和等号在 Haml 中的作用。
猜你喜欢
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
相关资源
最近更新 更多