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 11:48:22 浏览: 21
根据错误信息,你的代码中存在一个 `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` 或者没有数据时,返回一个空的数组。
相关问题
如何解决 nil:NilClass的未定义方法“each”
这个错误通常会在尝试在一个 nil 对象上调用 each 方法时出现。为了解决这个问题,我们需要先判断对象是否为 nil,如果是,则需要先对其进行处理。一种解决方法是使用 Ruby 的 safe navigation运算符(&.)来避免在 nil 对象上调用 each 方法。例如:
```
array&.each do |item|
# code here
end
```
在这个例子中,如果 array 为 nil,则不会调用 each 方法,也不会抛出 nil:NilClass 的错误。另一种解决方法是在调用 each 方法之前,先对对象进行非空检查。例如:
```
if array.present?
array.each do |item|
# code here
end
end
```
这样做可以确保我们只在非空对象上调用 each 方法,避免出现 nil:NilClass 的错误。
application=phoenix [error] :port for http config is nil, cannot start server
根据你提供的信息,这个错误是Phoenix框架在启动HTTP服务器时出现的。错误提示显示端口配置为 nil,也就是没有设置端口号。因此无法启动HTTP服务器。
解决这个问题的方法是在 Phoenix 的配置文件 config/config.exs 中,设置 HTTP 端口号。可以在 `config :phoenix, :http` 部分添加以下代码:
```elixir
port: 4000 # 替换为你想要的端口号
```
然后重新启动 Phoenix,应该就可以正常启动了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)