0

我是 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 表格片段中显示患者姓名、患者年龄等。如果结果集为空,我不想显示 html 表格。但我不确定如何以haml格式实现它。

4

1 回答 1

1

这是我将如何做到的。我在这里假设您在索引视图中有您的患者列表。

在您看来:

= 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
于 2013-02-05T21:17:41.613 回答