ruby-on-rails
  • ruby
  • nokogiri
  • 2010-08-10 1 views 0 likes 
    0

    말과 함께, 우리는 HTML이 ... 모두있는이상한 문제가 노코 기리

    <div class="replace-me"> 
    </div> 
    

    ... 코드는 다음입니다

    <video src='my_video.mov'></video> 
    

    로 교체해야합니다 :

    doc.css("div.replace-me").each do |div| 
        div.replace "<video src='my_video.mov'></video>" 
    end 
    

    간단하지만, 불행히도, 그것은 나를 위해 작동하지 않습니다. follwing을 오차 노코 기리 충돌 :

    doc.css("div.replace-me").each do |div| 
        div.replace "<div>Test</div>" 
    end 
    

    이것은 노코 기리 버그, 아니면 내가 뭔가 잘못 수행

    undefined method children' for nil:NilClass /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in method_missing' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/html/document_fragment.rb:16:in initialize' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in new' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in fragment' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:776:in coerce' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:331:in `replace'

    원시 사업부로 교체가 작동합니까?

    PS :이 목적을 위해 "add_child", "inner_html"및 기타 세터와 같은 문제

    나는 당신의 이전 질문에서 내 의견을 인용합니다

    답변

    0

    : 로그로 보면

    This happens because of HTML strictness (HTML has a predefined set of elements). Replace Nokogiri::HTML(self.content) with Nokogiri::XML(self.content) and do not forget to add a DOCTYPE declaration manually later.

    +0

    확인. 이 게시물로 이동하자 :) 대체와 함께 작동하는 것 같습니다. 하지만 또 다른 문제는 - 수정 된 문서의 일부를 self.content에 다시 저장하려고하면 이전 부분을 대체 한 부분 만 얻게됩니다. 그러나 어딘가에 있었고 (self.content에서) 수정되지 않은 다른 요소들은 사라졌습니다. – AntonAL

    +0

    매우 이상합니다. 이유를 이해하려고 노력 중입니다. 교체하기 전에 원본 HTML을 표시 할 수 있습니까? –

    0

    당신이 nokogiri로 선택한 부분은 0이됩니다.

    이 방법을 시도해 보시겠습니까?

    doc.css(".replace-me").each do |div| 
    div.replace "<video src='my_video.mov'></video>" 
    end 
    

    또는 당신은 당신이 대체 할 요소를 지정해야합니다.

     관련 문제

    • 관련 문제 없음^_^