实际上我和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
也许有人可以说我怎么写这段代码!谢谢!
答案 0 :(得分:2)
由于您只对第一个元素感兴趣,因此您可以使用#at_css
代替#css
。因此您可以执行以下代码:
cesc4 = diagnose.at_css('geschlechtsbezug')
如果找不到geschlechtsbezug
,则cesc4
会自动设置为nil
。
<强>更新强>
问题是我的文件看起来像这样:意味着我只想要['V']
然后我会这样做:
cesc4 = diagnose.at_css('geschlechtsbezug')
cesc4 &&= cesc4['V']
答案 1 :(得分:1)
这不是简单的:
cesc4 = diagnose.css('geschlechtsbezug').empty? ? nil : diagnose.css('geschlechtsbezug')[0]
答案 2 :(得分:0)
我用这个简单的代码解决了我的问题:
if diagnose.at_css('geschlechtsbezug') == nil
cesc4 = diagnose.at_css('geschlechtsbezug')
else
cesc4 = diagnose.css('geschlechtsbezug')[0]['V']
end
感谢@Priti提供了一些有益的观点!
答案 3 :(得分:0)
我喜欢这样做:
cesc4 = diagnose.at('geschlechtsbezug')['V'] rescue nil
有些人不喜欢救援,但对我来说这是最直截了当的。很明显,当我读到这个时,发生了什么,使用三元或if / else,而不是那么多。