实际上我正在与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]
不是每个诊断都可用。所以我想做一个像这样的功能
如果diagnose.css('geschlechtsbezug')[0]不存在,cesc4=nil
也许有人可以告诉我如何写这个代码!谢谢
由于您只对第一个元素感兴趣,因此可以使用#at_css
而不是#css
。因此,您可以执行以下代码:
cesc4 = diagnose.at_css('geschlechtsbezug')
如果未找到geschlechtsbezug
,则cesc4
将自动设置为nil
。
更新
问题是我的文件看起来是这样的:意味着我只想要['V']
然后我会做如下操作:
cesc4 = diagnose.at_css('geschlechtsbezug')
cesc4 &&= cesc4['V']
这不是像那么简单吗
cesc4 = diagnose.css('geschlechtsbezug').empty? ? nil : diagnose.css('geschlechtsbezug')[0]
我喜欢做:
cesc4 = diagnose.at('geschlechtsbezug')['V'] rescue nil
有些人不喜欢救援,但对我来说,这是最直接的。当我读到三元或if/else时,我很清楚那里发生了什么,没有那么多。
我用这个简单的代码解决了我的问题:
if diagnose.at_css('geschlechtsbezug') == nil
cesc4 = diagnose.at_css('geschlechtsbezug')
else
cesc4 = diagnose.css('geschlechtsbezug')[0]['V']
end
感谢@Priti的帮助!