2013-03-18 1 views
0

Недавно я начал изучать Rails и пытаюсь создать простое приложение, которое сбрасывает футбольные матчи с веб-сайта и отображает данные в моем index.html. Затем пользователи могут попытаться предсказать счет очков.Показать данные, снятые с Nokogiri в Rails?

мне удалось наскрести данные в файл fixtures.rb с помощью Nokogiri:

require 'nokogiri' 
require 'open-uri' 
doc = Nokogiri::HTML(open("http://www.bbc.co.uk/sport/0/football/21784836")) 
doc.css("tr.row2").each do |item| 
    puts item.at_css("td.left.first p").text 
end 

Что бы самый простой способ добавить это в Ruby On Rails приложения? Могу ли я поместить это в контроллер? У меня возникли проблемы с вставкой текста в полном виде.

ответ

3

Добавьте его в массив, а затем используйте его в своем контроллере.

@football = [] 
doc.css("tr.row2").each do |item| 
    @football << item.at_css("td.left.first p").text 
end 

Затем на ваш взгляд, вы можете ссылаться на содержание:

<% if @football %> 
    <ul> 
    <% @football.each do |foot| %> 
     <li><%= foot %></li> 
    <% end %> 
    </ul> 
<% end %> 
+0

Много спасибо Ричард. Я просто попробовал это, но получаю ошибку {undefined method 'each 'for nil: NilClass} Я думаю, это означает, что есть только 1 @football? –

+0

Вы помещали этот код в действие, связанное с вашим представлением? Я отредактировал ответ только для отображения кода, если значение '@ football' имеет значение. –

+0

Спасибо, Ричард. Он работает сейчас. Я первоначально разместил действие вне метода индекса в контроллере. Он работает, когда внутри. Ценить это. –