我是ruby新手,在用haml语法实现搜索视图时遇到了问题。
这是我搜索的控制器代码,它工作得很好
应用程序/控制器/搜索
def search(text)
@patients = @client.submit_search({ query: text, page: 1, page_size: 30 })
end
这是我在/config 中的路线
match 'patients/index' => 'search/patients#index', via: :get
这是我的观点,其中包含的形式:
//Search Form
%h2 Patient Search
.search-form-elements
%form{ :action => "", :method => "get"}
%label{:for => "name"} First Name:
%input{:type => "text", :name =>"first_name"}
%label{:for => "name"} Last Name:
%input{:type => "text", :name =>"last_name"}
%label{:for => "name"}
%input{:type => "submit", :value => "Search", :class => "button"}
%table.table.table-bordered.table-condensed
%tr
%th
Patient Name
%th
Id#
%th
Age
%th
Gender
基本上,当我键入一些文本并点击提交时,我想在上面的html表片段中显示patient.name、patient.age等。如果结果集为空,我不想显示html表。但我不确定如何在haml格式中实现这一点。
以下是我的操作方法。我假设您在索引视图中有您的患者列表。
在您看来:
= form_tag patients_path, method: 'get' do
= text_field_tag :search, params[:search]
= submit_tag "Search", :name => nil
- if @patients.present?
%table.table.table-bordered.table-condensed
%tr
%th Patient Name
%th Id
%th Age
%th Gender
- @patients.each do |patient|
%tr
%td= patient.name
%td= patient.id
%td= patient.age
%td= patient.gender
在Patient
控制器中:
def index
@patients= Patient.search(params[:search])
end
在您的模型中:
def self.search(search)
key = "%#{search}%"
if search
where('first_name LIKE ? OR last_name LIKE ?', key, key)
else
all
end
end