Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-如何在视图上显示API响应?_Ruby On Rails_Api - Fatal编程技术网

Ruby on rails Rails-如何在视图上显示API响应?

Ruby on rails Rails-如何在视图上显示API响应?,ruby-on-rails,api,Ruby On Rails,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 a

我正在构建一个连接到的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 %> 

“posts”,:action=>“scrape”},method::post)do%>
正确%>
没有找到结果
...
我得到
“未找到结果”
。我感觉这是我设置表单组与控制器交互的方式,当我按下搜索按钮时,它不是查询yelp

如何存储此类API调用的结果并在视图上显示结果


这更像是Rails的问题,您不必尝试Yelp。当调用
Yelp.client.search('Some City',…)
时,Yelp通过发送“Some City”中餐馆的列表进行响应

看起来您的
scrape
操作正在重定向到posts index操作,在这种情况下,您在
scrape
操作中设置的
@result
变量将被忽略。纠正这种情况的一种方法是将重定向更改为
render:posts
,在这种情况下,posts索引视图应该可以使用
@results
变量。

谢谢!不知何故,当我执行
渲染:posts
时,它不起作用,但是
:index
起作用了。然而,你把我引向了正确的方向!如果你不介意的话,我可以再问一个问题吗?我的代码的问题是运行了
@results
,但是
redirect
@results
到达视图之前运行并完成了代码,这就是为什么它没有显示任何值的原因吗?如果没有,您介意进一步解释(除了上面的注释)为什么代码以前不工作吗?听起来不错——重定向将流传递到一个全新的控制器,据我所知,这会吹走您以前设置的任何实例变量。重定向后视图中唯一可用的实例变量是重定向到的新操作中设置的变量。