2013-10-16 81 views
1

我有一個刮我想放在視圖上,我的耙子文件看起來像這樣。顯示刮擦來查看

desc "Fetch teams table" 
    task :fetch_teams => :environment do 
     require 'nokogiri' 
     require 'open-uri' 

     url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html" 
     doc = Nokogiri::HTML(open(url)) 
     puts doc.css("tr.title:has(td:contains('Western')) ~tr").map {|a| a.search('td')[0].text} 
    end 

我也曾在我的控制器

 def show 
     @teams = [] 
     doc.css("tr.title:has").each do |team| 
     @teams << item.at_css("td:contains('Western') ~tr").text 
    end 

<% if @teams %> 
    <ul> 
     <% @teams.each do |team| %> 
     <li><%= team %></li> 
     <% end %> 
    </ul> 
    <% end %> 

不會工作定義呢?

爲什麼?

感謝

+0

在你的控制器,內部'@teams = []''手段@ teams'不爲零了,所以測試'如果@ teams'永遠即使'返回true,@隊'是一個空陣列。使用'if @ teams.present?'來測試它是否不爲零,如果它不是空的;-)('.blank?'方法與'.present?'完全相反) – MrYoshiji

回答

0

控制器

require 'nokogiri' 
require 'open-uri' 
@teams = [] 
url = "http://www.nba.com/standings/team_record_comparison/conferenceNew_Std_Cnf.html" 
doc = Nokogiri::HTML(open(url)) 
doc.css("tr.title:has(td:contains('Western')) ~tr").each do |team| 
    p team.search('td')[0].text 
    @teams << team.search('td')[0].text 
0

如果您建立您的Nokigiri doc在耙子任務,那麼你沒有訪問到您的doc控制器內。 doc指向你的控制器動作究竟是什麼?