我实现了一个简单的rails搜索,它搜索我的数据库并显示结果就好了。但是,我并不完全了解如何将搜索查询路由到新页面。
我使用rails scaffolding来创建我网站的这个特定部分:
class DogSearchesController < ApplicationController
before_action :set_dog_search, only: [:show, :edit, :update, :destroy]
# GET /dog_searches
# GET /dog_searches.json
def index
@dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"])
end
# GET /dog_searches/1
# GET /dog_searches/1.json
def show
@dog_search = DogSearch.find(params[:city])
end
index.html.rb
<%= form_tag dog_searches_path, :method => 'get', :class => 'search-form' do %>
<i class="fa fa-map-marker"></i>
<%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %>
<%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %>
<% end %>
我已在dog_searches/listing
中创建了一个页面,并将其添加到我的路径文件get 'dog_searches/listing'
任何帮助都将不胜感激。
答案 0 :(得分:0)
通常,搜索结果将转到带有参数的索引页面。如果您想要显示dog_searches,过滤或分页的列表,那么这是使用索引操作和查看所有这些内容的常用方法。
但是,如果你想渲染列表页面,你可能想要将表单设置为该页面
# routes.rb
resources :dog_searches do
get :listing, :on => :collection
end
在视图中 - 请注意网址更改
<%= form_tag listing_dog_searches_path, :method => 'get', :class => 'search-form' do %>
<i class="fa fa-map-marker"></i>
<%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %>
<%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %>
<% end %>
然后在控制器中,你有一个非常类似的索引动作。
def listing
@dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"])
end
但是,再一次,索引可以为你处理所有这些吗?
答案 1 :(得分:0)
您的表单所在的目录是什么,以及您希望将搜索query
或result
发送到哪个新页面?
默认情况下,rails使用与控制器操作相同的名称呈现文件。
因此,如果执行搜索的控制器操作是index
中的DogSearchesController
操作,则视图文件为dog_searches/index.html.erb
另一方面,如果您希望视图为dog_searches/listing.html.erb
,那么您可能需要在listing
中创建DogSearchesController
操作,并将搜索内容移动到其中,如下所示:
def listing
@dog_searches = DogSearch.where(["dog LIKE ? ","%#{params[:search]}%"])
end
并让您的搜索表单指向此操作:
<%= form_tag listing_dog_searches_path, :method => 'get', :class => 'search-form' do %>
<i class="fa fa-map-marker"></i>
<%= text_field_tag :search, params[:search], :class => 'homesearch', :placeholder => 'Enter search term' %>
<%= my_button_to '<i class="fa fa-search"></i>', {}, :class => "fa fa-search" %>
<% end %>
请注意,我假设listing
操作的路径是listing_dog_searches_path
。
希望这能为它注入一些亮光吗?