2013-11-17 3 views
0

В моем приложении Ruby on Rails я создал массив строк @dates из HTML-документа. Я хотел бы извлечь первый элемент из @dates, содержащий «Неделя», сохранить его в отдельной переменной @cal и распечатать его в представлении. Вот метод контроллера, который будет делать это:Проверка подстроки в контроллере Ruby on Rails

def locations 
    page = Nokogiri::HTML(open("app/views/home/file.html")) 
    @dates = page.css(".boxx") 
    @cal = "THIS DOESNT WORK" 

    @dates.each do |d| 
    if d.include? "Week of" 
     @cal = d 
     break 
    end 
    end 

Моя проблема заключается в том, что даже если «Неделя» отображается как текст в HTML-документе, я все еще получаю «ЭТО не работает», когда я печать @cal в представлении. По какой-то причине, включите? не находит совпадение подстроки. Я не знаю, почему. Большое спасибо за Вашу помощь.

+0

Вы распечатаны значение '@ date'? –

+0

Да, это значение является нормальным. –

+0

Для моей будущей ссылки на вопрос такого типа, если бы я сказал: «Вы распечатали« @ date.inspect », вы бы ответили иначе? –

ответ

1

Это происходит потому, что в соответствии с кодом, «d» не строка, а объект типа Nokogiri :: XML :: Element

Вы можете попробовать следующую модификацию

page = Nokogiri::HTML(open("app/views/home/file.html")) 
    @dates = page.css(".boxx") 
    @cal = "THIS DOESNT WORK" 

    @dates.each do |d| 
    if d.to_s.include? "Week of" 
     @cal = d 
     break 
    end 
    end 
+0

Спасибо, это сработало. –

Смежные вопросы