2016-10-17 9 views
1

Моя цель - создать простое веб-приложение, в котором посетитель может ввести своего любимого исполнителя, чтобы узнать, что в настоящее время доступно на аукционе с расчетной ценой. Давайте используем художника Robert Genn в качестве примераПростая веб-разработка приложений в Ruby/Sinatra - «представленная информация» не выбрана

Когда я запускаю код в рубине, я просматриваю страницу http://localhost:4567/ и из того, что вижу; это простая оболочка того, что я в конечном итоге хочу создать. Однако, как только я ввожу интересующего меня художника, то есть Robert Genn Я получаю страницу с ошибкой.

Вот мои два файла кода .RB первого и .erb после этого


require 'sinatra' 
require 'mechanize' 

get '/' do 
    @greeting = "WELCOME! WHAT ARTIST WOULD YOU LIKE TO LOOK UP TODAY?" 
    erb :index 
end 

agent = Mechanize.new 

page = agent.get('http://www.invaluable.com/') 

search_form = page.form 
search_terms = gets.chomp.delete(",") 

search_form['withAll'] = search_terms 

page = search_form.submit 

items = page.css('.lot') 
item = page.css('.estimate normal') 

items.each do |item| 
    return "#{item.css('span').text} #{items.css('span').text}" 

end 

Вот мой .erb файл


<html> 
    <head> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/css/bootstrap.min.css"> 
    </head> 
    <body> 
     <div class="container"> 

      <h1><%= @greeting %></h1> 
      <p>What artist are you seeking today?</p> 
      <form action="/" method="POST" class="form-inline"> 
       <div class="form-group"> 
       <input type="text" name="ticker" class="form-control"> 
       </div> 
       <input type="submit" class="btn btn-primary"> 
      </form> 
     </div> 
    </body> 
</html> 

ответ

2

Есть много что-то не так с вашим образцом.

Вам нужно поместить весь свой код в блок get '/' do или лучше в вспомогательный файл/модуль.

Использование чего-то вроде механизации для запроса внешнего источника является плохим решением. Пока нормально обращаться к внешним источникам, сделайте это с помощью Net::HTTP GET или что-то в этом роде. Механизм собирается запустить браузер на сервере, и это обречено на провал.

Использование get также не выполняется на сервере или с результатами формы.

Предлагаю вам сначала прочитать о Синатре, много хороших примеров (например, http://www.sinatrarb.com /) и некоторых книг на выбор. например: https://www.geekbooks.me/book/view/jump-start-sinatra http://dl.finebook.ir/book/26/14702.pdf

Также попробуйте нарезать код на куски вы можете проверить сам по себе, например, выполнению запрос от внешнего источника может быть извлечен в методе, который вы можете сначала протестировать перед его реализацией в остальной части ваш код.

В этом случае я предполагаю, что из-за вышеизложенного будет много ошибок, но в будущем дайте нам стекную ошибку, которую вы получите, чтобы мы могли лучше вам помочь.

Не могу дать вам код, потому что мне пришлось бы переписать все, что не является нашей целью. Не сдавайтесь и продолжайте учиться и добиваться успеха!

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

  • Нет связанных вопросов^_^