我需要使用我的rails应用程序中的表单提供的2个参数(标记和设备)从外部API搜索数据(教程)。
在我的路线中,我有:
resources :search_lists, only: [:index] do
collection do
post :search
end
end
以下是我认为我应该放在SearchListsController
中的内容:
def index
@search_parameter = params[:tags]
end
def search
end
我不确定如何组织我的代码以及我应该在哪里传递API调用。
以下是我的观点,rails无法识别search_lists_url
:
<form action="<%= search_lists_url %>">
<input type="text" name="" value="" placeholder="Search by tag">
<label >Filters:</label>
<input type="checkbox" value="first_checkbox">Smarthpone
<input type="checkbox" value="second_checkbox">Tablet
<input type="checkbox" value="third_checkbox">Mac
<br>
<input type="submit" value="Search">
</form>
有人能帮帮我吗? :)
答案 0 :(得分:0)
如果是外部API,则您的API使用者无法识别API应用程序的路径助手。更好的方法是让表单操作在使用者应用程序中调用控制器操作的URL,然后在此控制器操作上处理API调用。
例如,在您的API使用者应用程序中,您可以在路线中使用此功能:
post "search_lists" => "lists#search", as: :search
然后在lists_controller.rb
目录中有一个controllers
文件,其搜索操作如下:
class ListsController < ApplicationController
include HTTParty
def search
## make your API Call on this action
response = HTTParty.post(your_api_host_url/search_lists/search, {body: [#your form input data##]})
end
end
您可以将返回的JSON解析为ruby数组并在视图中显示它。 在我使用HTTParty gem发出HTTP请求的示例中,您可以使用其他可用的ruby库来完成相同的操作。
您的表单现在看起来像这样:
<%= form_tag search_path, method: :post do %>
<%#= Your input tags %>
<% end %>