nil的未定义方法`css':NilClass

时间:2011-01-17 14:10:53

标签: ruby-on-rails xml nokogiri xml-parsing

我在我的Rails应用程序中收到此错误,无法找到解决方案。我将从失败的类中添加一些代码。如果你这么想,这可能是一个更具体系结构的问题,请说,我将从其他类中添加更多代码。我基本上只有这个模型,一个控制器和另一个位于lib的类。当然是一种观点。提前谢谢!

  #app/models/news_api.rb
  require 'open-uri'

  class NewsApi
    URL = "http://www.mysomething.com/partner/api/1_0/somerandomnumber/
          channel/290/material/list/"

  def self.download
   new.document.css('news').map {|node| record(node) } 
  end

  def document
    Nokogiri::XML(open(URL)) 
    puts URL.to_s
  end

  def record(node)
    Story.new(node_to_hash(node)) 
  end

  def node_to_hash(node)
    Hash[Story::ATTRIBUTES.collect {|attribute| [attribute, text(node, attribute)] }]
  end

  def text(node, selector)
   node.css(selector).text
  end
end

@idlefingers:这是我视图中的代码。我在做什么基本上是使用Nokogiri从API解析一些xml,然后在我的视图中在HTMl中显示响应。

<ul id="news">
 <% @stories.each do |story| %>
 <li class=" <%= story.type_of_media %>">
  <h2><%= link_to story.header, story.url %></h2>
  <p class="permalink"><%= link_to 'Trackback', story.url %></p>
  <p class="meta">
    <strong><%= story.source_name %></strong>
    <br/>
    <%= story.created_at %>
    <br/>
    <%= story.geo %>
  </p>
  <p class="summary"><%= story.summary %></p>
 </li>

&lt;%end%&gt;                    

1 个答案:

答案 0 :(得分:2)

错误来自何处?乍一看,它似乎来自.document方法,但目前尚不清楚。你能添加错误回溯吗?

现有的.document方法将返回puts URL.to_s的结果,该结果为零。您只需按照它的外观切换.document方法中的两行......

def document
  puts URL.to_s
  Nokogiri::XML(open(URL)) 
end