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テーブルフラグメントにpatient.name、patient.ageなどが表示されます。結果セットが空の場合は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 に答える