GoY*_*shi 3 ruby arrays string null ruby-on-rails
我从数据库列中获取不同 url 的数组。两者都用于在 url 上应用白名单(例如 www.example.com/test/page.html)。一个用于 url 开头,一个用于结尾。
whitelist_start = self.domain.whitelists.map(&:url_start)
whitelist_end = self.domain.whitelists.map(&:url_end)
Run Code Online (Sandbox Code Playgroud)
在将我的 url 插入数据库之前,我想检查 save_url 是否为真。之后,将插入过滤后的 url。网址可以以以太开头(例如 www.example.com/test)或以网址结尾(例如 page.html)。但是整个白名单也可以同时为空。这三件事之一。
save_url = url.starts_with?(*whitelist_start) || url.ends_with?(*whitelist_end) || whitelist_start.empty? || whitelist_end.empty?
Run Code Online (Sandbox Code Playgroud)
我在starts_with 中的数组名称之前使用*?和ends_with?因为我想在那里插入所有数组值。但是,如果一个数组为空(这完全没问题),我会收到此错误并且无法继续。
no implicit conversion of nil into String
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?
发生这种情况是因为您的阵列上有一个 nil 位置,试试这个
whitelist_start = self.domain.whitelists.map(&:url_start).compact
whitelist_end = self.domain.whitelists.map(&:url_end).compact
Run Code Online (Sandbox Code Playgroud)
我会告诉你,你的数组不是空的
2.3.1 :017 > test = []
=> []
2.3.1 :019 > "string".starts_with?(*test)
=> false
Run Code Online (Sandbox Code Playgroud)
现在,你的nil阵列位置
2.3.1 :020 > test = [nil]
=> [nil]
2.3.1 :021 > "string".starts_with?(*test)
TypeError: no implicit conversion of nil into String
Run Code Online (Sandbox Code Playgroud)
在我的测试中,此错误仅在nil处于第一个位置时发生
| 归档时间: |
|
| 查看次数: |
10153 次 |
| 最近记录: |