在 Rails 中,如何使用搜索表单标签更改控制器方法的参数?

In Rails how do I change the params of a controller method using a search form tag?

我正在构建一个 Rails 与外部搜索交互的应用程序 API。我有一个具有搜索功能的 class 方法,我的设计控制器中的索引方法可以访问该方法。我怎样才能让我的表单搜索改变我的控制器方法的参数,从而执行搜索?我的代码如下。非常感谢您的帮助:)

Class方法:

class Api
  include HTTParty
  base_uri "http://search.exampleapi.com"

  attr_accessor :name

  # Find a particular design, based on its name
  def find(name)
    self.class.get("/designs", query: { q: name }).parsed_response
  end
end 

控制器:

class DesignsController < ApplicationController
    def index
        @search = Api.new.find(params[:q])['results']
    end
end

Routes.rb

Rails.application.routes.draw do
    root 'designs#index'
    resources :designs
end

查看:

<h1>Search</h1>

<%= form_tag(controller: "designs", action: "search", method: "get") do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>

<h2>Search results:</h2>

<% @search.each do |design| %>  
<h3><%= design['name'] %></h3>
<h5><%= design['thumbnail_url'] %></h5>
<% end %>

因为你可以使用索引页面,designs_path 会自动将你路由到索引控制器

<%= form_tag(designs_path, method: :get) do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>