我正在使用Yelp API。我有一个bootstrap导航栏,我希望用户在他们想要的Yelp结果对应的城市中写。但目前用户无法输入他们选择的城市,只有我作为程序员。这是我的控制器:
class SearchesController < ApplicationController
def index
end
def search
parameters = { term: params[:term], limit: 16 }
render json: Yelp.client.search('London', parameters)
end
end
如您所见,如果用户想要去伦敦,我必须在我的控制器中输入“London”。但我希望导航栏中的用户输入承担这一责任。
以下是我的_navbar.html.erb的代码:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Which city?">
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
答案 0 :(得分:0)
您的搜索表单应POST到控制器中的端点。您可以进行“搜索”操作并从URL中获取参数。默认情况下,您拥有的表单标记将尝试推送查询参数,这将是搜索词。
你很亲密。
答案 1 :(得分:0)
您的表单输入需要name
属性才能发送数据,以便您可以在params
哈希中接收它。
<input type="text" class="form-control" placeholder="Which city?" name="search">
表单需要知道去哪里
<form action="/searches/search" class="navbar-form navbar-left">
当您立即发送表单时,您将在params哈希中将结果发送到控制器。
然后,您可以将渲染更新为
Yelp.client.search(parmas[:search], parameters)
Here是关于请求如何工作的非常好的教程。