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