나는 Yelp API에 연결된 레일 앱을 만들고 있습니다.레일 - 조회수에 API 응답을 표시하는 방법은 무엇입니까?
내가 레일 콘솔에이 시도def scrape
@results = Yelp.client.search(params[:location], {limit: 5, category_filter: "dessert"})
...
redirect_to :posts
end
, 나는 그것이 작동하는지 확인할 수 있습니다 나는 scrape
방법을 만들었습니다.
results.businesses[0].name
#=> Super awesome dessert place! #it returns the right response on console
하지만 뷰에서 사용하면 아무 것도 표시되지 않습니다.
<div class="form-group">
<%= form_tag({:controller=>"posts", :action=>"scrape"}, method: :post) do %>
<div class="form-group">
<%= text_field_tag :location, nil, class: 'form-control', placeholder: 'Location', style:"width: 50%", :required => true %>
</div>
<div class="form-group">
<%= submit_tag 'Search!', name: nil, class: 'btn btn-success search-button'%>
</div>
<% end %>
</div>
<div class="center-block">
<% if @results.blank? %>
<h3>No result found</h3>
<% else %>
<% @results.businesses.each do |result| %>
...
<%= result.name %>
나는 'No result found'
이됩니다. 컨트롤러와 상호 작용할 수 있도록 폼 그룹을 설치하는 방법이며 필자가 검색 단추를 눌렀을 때 yelp를 쿼리하지 않는다는 느낌이 들었습니다.
어떻게 이러한 API 호출의 결과를 저장하고 뷰에 결과를 표시 할 수 있습니까?
이것은 Rails 질문에 더 가깝습니다. 반드시 Yelp를 사용해 볼 필요는 없습니다. Yelp.client.search('Some City', ...)
이 호출되면 Yelp는 'Some City'에 레스토랑 목록을 보내 응답합니다.
고마워요! 어떻게 든'render : posts'하지만': index'는 효과가 없었습니다. 그러나, 당신은 나를 올바른 방향으로 이끌었습니다! 괜찮 으면 - 후속 질문 하나를 물어봐도 될까요? 내 코드의 문제는'@ results'가 실행되었다고 말하는 것이 옳은가,'redirection'이 실행되고'@ results'가보기에 도달하기 전에 코드를 완료 했으므로 어떤 값도 표시하지 않는 이유가 무엇입니까? 그렇지 않은 경우 위 코드에 대한 설명 이외에 이전에 코드가 작동하지 않은 이유에 대해 더 자세히 설명해 주시겠습니까? – Iggy
맞아요 - 리다이렉트하는 것이 흐름을 완전히 새로운 컨트롤러로 넘겨 준 것 같아요. 이전에 설정 한 인스턴스 변수를 날려 버리는 것을 이해합니다. 리다이렉션 후보기에서 사용할 수있는 인스턴스 변수는 리다이렉션 된 새 액션에서 설정된 인스턴스 변수뿐입니다. –