我们在http://firststopcosmeticshop.co.uk 实现了类似的功能(尝试顶部的搜索)
搜索
简单地说,您要寻找的是一种功能,可以帮助您搜索您的数据。
这可以相对简单地实现,但你必须确保你的语法是正确的:
#config/routes.rb
resources :employees do
get :search
end
#app/controllers/employees_controller.rb
class EmployeesController < ApplicationController
layout: Proc.new {|controller| controller.request.xhr? ? false : "application" }
def search
@emp_names = Employee.where code: params[:employee_code]
end
end
#app/views/employees/search.html.erb
<% @emp_names.each do |employee| %>
<%= employee.name %>
<% end %>
此设置将使您能够加载 search 项目如果您想显示它们,让您既可以使用 ajax(详情如下),或者只是简单HTML / HTTP
Ajax
如果您想使用 Ajax 来提供“实时”结果,您需要使用以下详细信息:
#app/assets/javascripts/application.js
$(document).on("ajax:success", "form", function(status, data, xhr){
$(this).append(data);
});
这应该在前端(请求)页面的任何位置呈现结果。诀窍在于控制器对layout 的断言取决于接收到的请求类型(HTTP 或 XHR)
表格
最后,您的表单 需要反映您希望定义的功能。目前,您没有任何方法可以将请求发送到您的 emp_names 方法,因此您需要创建一种更好的方法来管理它:
#view
<%= form_tag employees_search_path, remote: true do %>
<%= text_field_tag :input %>
<%= submit_tag %>
<% end %>
当然,表单可能会发生很大变化,但这基本上意味着您将向您的employees_search_path 发送一个简单的请求,然后您就可以在控制器中管理响应;正常情况下,或者使用 Ajax