ActionView::Template::Error (undefined method `map' for nil:NilClass):物资名称: <%= select_tag :goods_name, options_for_select(@name, params[:goods_name]), class: 'select_goods', style: 'margin-left: 10px;' %> @names = @warn_settings.select('DISTINCT goods_name').map(&:goods_name)这样写不对吗?怎么修改?
时间: 2024-03-08 15:48:22 浏览: 486
根据错误信息,你的代码中存在一个 `undefined method 'map' for nil:NilClass` 的错误,这意味着你尝试对一个 `nil` 值调用 `map` 方法。根据你提供的代码,这个错误可能是由 `@name` 变量未定义或者为 `nil` 引起的。
你需要首先检查 `@name` 变量是否被正确地初始化并且不为 `nil`,如果 `@name` 为 `nil`,则在调用 `options_for_select` 方法时会抛出异常。如果确保 `@name` 变量被正确地初始化了,你还需要检查 `@warn_settings` 是否正确地加载了数据,如果 `@warn_settings` 没有加载数据,那么就会返回 `nil`,从而导致 `@name` 变量为 `nil`。
最后,如果你想要避免这个错误,你可以使用安全的操作符 `&.` 来调用 `map` 方法,例如:
```ruby
@names = @warn_settings&.select('DISTINCT goods_name')&.map(&:goods_name) || []
```
这将在 `@warn_settings` 为 `nil` 或者没有数据时,返回一个空的数组。
阅读全文