Nokogiri,只有存在于文件中

时间:2013-08-18 15:54:05

标签: ruby nokogiri

实际上我和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

也许有人可以说我怎么写这段代码!谢谢!

4 个答案:

答案 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,而不是那么多。