我正在构建一个连接到Yelp API的rails应用。我创建了scrape
方法:
def scrape
@results = Yelp.client.search(params[:location], {limit: 5, category_filter: "dessert"})
...
redirect_to :posts
end
当我在 Rails控制台上尝试此操作时,我可以确认它是否有效。
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'
。我觉得这是我设置form-group与控制器交互的方式,当我按下搜索按钮时它不会查询yelp。
如何存储此类API调用的结果并在视图上显示结果?
这更像是一个Rails问题,你不必尝试过Yelp。调用Yelp.client.search('Some City', ...)
时,Yelp会通过在“某些城市”中发送餐馆列表来回复。
答案 0 :(得分:2)
您的scrape
操作似乎正在重定向到帖子索引操作,在这种情况下,您在@result
操作中设置的scrape
变量将被忽略。解决此问题的一种方法是将重定向更改为render :posts
,在这种情况下,您的@results
变量应该可用于帖子索引视图。