以haml语法显示搜索结果

时间:2013-02-05 21:00:29

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 haml

我是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格式实现这一点。

1 个答案:

答案 0 :(得分: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