在ERB内联代码中获取第一个非零数组值

时间:2015-07-24 09:17:02

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

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

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

它给我以下错误。请让我知道如何获得价值?

  

找到'for“[]”:String

2 个答案:

答案 0 :(得分:3)

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

serviceIntent = new Intent(MainActivity.this, MyService.class);
                    serviceIntent.addCategory(MYTAG);
                    stopService(serviceIntent);

如果arr = [nil, nil, "foo", "bar", nil] arr.detect{|x| !x.nil?} => "foo" 是一个数组,那么你可以这样做

entity['perattr.firstname']

请勿在其上调用entity['perattr.firstname'].detect{|x| !x.nil?} ,这会将其变为字符串。

答案 1 :(得分:0)

to_s通常用于将对象转换为String。因此,无论entity['perattr.firstname']保持什么值,entity['perattr.firstname'].to_s将永远是一个字符串。由于String没有find方法,因此收到错误。

  

找到' for" []":String