0

实际上我正在与 Nokogiri 合作:

gruppe.css('diagnosen_liste>diagnose').each do |diagnose|
    cesc = diagnose.css('icd_code')[0]
    cesc2 = diagnose.css('bezeichnung')[0]
  cesc3 = diagnose.css('abrechenbar')[0]
  cesc4 = diagnose.css('geschlechtsbezug')[0]
    sub = ""
  diagnose.css('diagnosethesaurus_liste>diagnosethesaurus').each do |subcategory|
    sub << "#{subcategory['V']};"
  end
    arr << "Icd3.create!({:nummer => '#{cesc['V']}', :bezeichnung => '#{cesc2['V']}', :icd2_id => '#{b.to_s}', :sub => '#{sub}', :abrechenbar =>'#{cesc3['V']}', :geschlechtsbezug =>'#{cesc4['V']}'})" + "\n"
end

我的问题是:

cesc4 = diagnose.css('geschlechtsbezug')[0]

不是在每个诊断中都可用。所以我试图做这样的功能

如果diagnostic.css('geschlechtsbezug')[0]不存在,则 cesc4 = nil

也许有人可以告诉我如何编写这段代码!谢谢!

4

4 回答 4

2

由于您只对第一个元素感兴趣,因此您可以使用#at_css而不是 .因此您#css可以执行以下代码:

cesc4 = diagnose.at_css('geschlechtsbezug')

如果geschlechtsbezug未找到,cesc4则将自动设置为nil

更新

问题是我的文件看起来像这样:意味着我只想要 ['V']

然后我会做如下:

 cesc4 = diagnose.at_css('geschlechtsbezug')
 cesc4 &&= cesc4['V']
于 2013-08-18T16:22:18.610 回答
1

这不是这么简单吗:

cesc4 = diagnose.css('geschlechtsbezug').empty? ? nil : diagnose.css('geschlechtsbezug')[0]
于 2013-08-18T16:17:03.447 回答
0

我用这个简单的代码解决了我的问题:

if diagnose.at_css('geschlechtsbezug') == nil
cesc4 = diagnose.at_css('geschlechtsbezug')
else
cesc4 = diagnose.css('geschlechtsbezug')[0]['V']
end

感谢@Priti 提供一些有用的信息!

于 2013-08-18T16:43:45.700 回答
0

我喜欢做:

cesc4 = diagnose.at('geschlechtsbezug')['V'] rescue nil

有些人不喜欢救援,但对我来说这是最直接的。当我读到三元或 if/else 时,我立即明白那里发生了什么,不是那么多。

于 2013-08-18T21:52:23.437 回答