【问题标题】:in ERB Inline code to fetch first non nil array value在 ERB 内联代码中获取第一个非零数组值
【发布时间】:2015-07-24 09:17:01
【问题描述】:

我需要获取数组中的第一个非零值。

我试过这段代码,但似乎没有用 entity['perattr.firstname'].to_s.find{|x|!x.nil?}

它给了我以下错误。请告诉我如何获得价值?

查找“[]”:字符串

【问题讨论】:

  • 您能否在您的问题中添加entity['perattr.firstname'] 的示例值?

标签: ruby-on-rails ruby ruby-on-rails-3 erb


【解决方案1】:

要获取数组中的第一个非零值,请使用detect

arr = [nil, nil, "foo", "bar", nil]
arr.detect{|x| !x.nil?}
=> "foo"

如果entity['perattr.firstname'] 是一个数组,那么你可以这样做

entity['perattr.firstname'].detect{|x| !x.nil?}

不要在上面调用to_s,这会变成字符串。

【讨论】:

  • 感谢您的帮助。它仍然无法正常工作,因为它为 nil:NilClass 生成错误未定义方法 `html_safe' 因此,我添加了 to_s 来解决此错误
【解决方案2】:

to_s 一般用于将对象转换为字符串。因此,无论entity['perattr.firstname'] 持有什么值,entity['perattr.firstname'].to_s 将始终是一个字符串。由于 String 没有 find 方法,因此您会遇到错误。

查找“[]”:字符串

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 2020-09-14
    • 2012-06-24
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多