我正在进行 API 调用,但没有将所有数据保存到我的数据库中,因此我认为我不需要为此目的制作模型。但是,我不知道如何为这个 API 调用生成一个表单,它在我的 Controller 中。
这是我认为的形式:
<%= simple_form_for ITHINKINEEDSOMETHINGHERE url: searchApis_path, :method => 'get' do |f| %>
<%= f.input :keyword, :placeholder => 'keyword', input_html: { name: :keyword } %>
<%= f.input :city, :placeholder => 'city', input_html: { name: :keyword } %>
<%= f.input :start_date, :placeholder => 'YYYY-MM-DD', input_html: { name: :start_date } %>
<%= f.input :end_date, :placeholder => 'YYYY-MM-DD', input_html: { name: :end_date } %>
<%= f.button :submit, "Submit" %>
<% end %>
我对应的 Controller :
class HomeController < ApplicationController
def index
end
def searchApis
start_date = params[:start_date]
end_date = params[:start_date]
keyword = params[:keyword]
city = params[:city]
eventbrite_request = Typhoeus::Request.new('https://www.eventbriteapi.com/v3/events/search?q='+keyword+'&sort_by=best&venue.city='+city+'&start_date.range_start='+start_date+'T00:00:00Z&start_date.range_end='+end_date+'T00:00:00Z',
method: :get,
headers: { 'Authorization' => ENV['EVENTBRITE']})
@response = eventbrite_request.run
# yelp_request = Typhoeus::Request.new('',
# )
# set @result to be the data that I want.
end
end
我收到“未定义方法‘model_name’”错误。
我向其发出 GET 请求的路由是 /searchApis
,所以我猜测表单中的 url 应该是 searchApis_path
。
到目前为止,我主要学习了如何制作一个表单来生成模型的新实例,但在这种情况下,表单本质上是启动 API 调用,稍后我将在我的表单下显示其响应。对于它的值(value),我希望以后能够将响应 JSON 中的选择数据保存到“书签”模型中。
谢谢。
最佳答案
您编写 ITHINKINEEDSOMETHINGHERE
的地方就是记录(通常是 ActiveRecord 模型)通常所在的位置。它用于构造各种字段名称。
因为看起来你在做一个搜索 Controller ,你可以把 :search
放在那里,然后会让你所有的表单字段命名为 search[keyword]
然后在您的后端,您只需访问适当的 params 对象,该对象通常嵌套在您为记录命名的任何内容下,因此在这种情况下,params[:search][:keyword]
.
http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for
我知道您使用的是 simple_form,但它从 form_for 继承了很多内容,因此该页面仍然是一个很好的引用
关于ruby-on-rails - 如何将表单的参数提交到 Controller 中的(API 调用)方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831829/