0

特定のページのメタ タグを変更するレーキ タスクがあります。

desc 'changes the meta tags'
task mixup_meta_tags: :environment do 
  meta_tags = ['index','noindex','index,nofollow','nofollow,noindex']
  new_tag = meta_tags.sample(1)[0]
  #
  #iterate through html docs
  base = 'app/views/site'
  pages = ['home','about','products','pricing']
  pages.each do |page|
    filename = base + '/' + page + '.html.haml'
    text = File.read(filename)
    current_tag = Nokogiri::HTML(File.open(filename, "r")).xpath("//meta[@name='robots']").first["content"]
    File.open(filename, "w") { |file| file << text.gsub(current_tag,new_tag)}
  end   
end

不可解なエラー メッセージが表示されます。

nil:NilClass の未定義メソッド `[]'

この行について:

current_tag = Nokogiri::HTML(File.open(filename,"r")).xpath("//meta[@name='robots']").first["content"]

この行は、(次のコード行を介して) 置き換えられるように、現在のタグが何であるかを把握することになっています。

ここで不適切な点について何かアドバイスはありますか?

4

1 に答える 1

1

と言っている

File.open(filename,"r")).xpath("//meta[@name='robots']").first

であるnil、または本質的に

File.open(filename,"r")).xpath("//meta[@name='robots']").empty?  # true
于 2012-07-27T01:22:01.753 に答える