Top > Ruby on Railsあれこれ > 住所からの従業員検索

内容

概要

とりあえず基本的なアプリを作成しましょうテーブル結合をしてみましょうで作成したアプリケーションを元にして、住所に関するキーワードを元に従業員情報を検索するサンプルを作成します。

検索条件入力画面(index.html.erb)
db_t_search1_1.jpg

検索結果表示画面(result.html.erb)
db_t_search1_2.jpg

サンプルのポイント

  • テーブルの結合を行います。
  • あいまい検索を行います。

サンプルの使い方

サンプルはあらかじめ用意していないので、以降の項目を参照にして、自分で作成しなければいけません。作成後に、ブラウザからhttp://127.0.0.1:3000/search1にアクセスしましょう(ポート番号"3000"は適宜、環境に応じて読み替えて下さい)。

ファイル構成

本項で作成・変更するファイル

ファイル名種類
index.html.erbビュー作成
result.html.erbビュー作成
address.rbモデル変更
search1_controller.rbコントローラー作成

検索条件入力画面(ビュー)

検索条件入力画面を作成しましょう。 "ror-db-tutorial\app\views\search1\index.html.erb"ファイルを以下の内容で作成します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
<html>
<head>
  <title>Tutorial: Employee Search1</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
 
<h2>Tutorial: Employee Search1</h2>
 
<% form_tag :action => 'search' do %>
  住所キーワードを入力下さい=><%= text_field_tag 'keyword', '', :size => 25 %>
  <%= submit_tag "検索" %>
<% end %>
 
</body>
</html>

検索結果表示画面(ビュー)

検索結果表示画面を作成しましょう。 "ror-db-tutorial\app\views\search1\result.html.erb"ファイルを以下の内容で作成します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
<html>
<head>
  <title>Tutorial: Employee List</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
<h2>Tutorial: Employee Result List</h2>
 
<table border="1">
  <tr style="background-color:pink">
    <th>Id</th><th>Name</th><th>JobType</th><th>Salary</th><th>Department</th><th>Address</th>
  </tr>
  <% for r in @results %>
    <% for e in r.employees %>
      <tr style="background-color:<%= cycle('white', 'yellow') %>">
        <td align="right"><%=h e.id %></td>
        <td><%=h e.name %></td>
        <td><%=h e.job_type %></td>
        <td align="right"><%= number_with_delimiter(e.salary, delimiter=",") %></td>
        <td><%=h e.department.name %></td>
        <td><%=h e.address.name %></td>
      </tr>
    <% end %>
  <% end %>
</table>
</body>
</html>

Addressモデル

"ror-db-tutorial\app\models\address.rb"

  0
  1
  2
class Address < ActiveRecord::Base
  has_many :employees
end

コントローラー

"ror-db-tutorial\app\controllers\search1_controller.rb"ファイルを以下の内容で作成しましょう。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
class Search1Controller < ApplicationController
  
  #検索条件入力画面表示
  def index
    render :action => 'index.html.erb'
  end
  
  #検索結果表示画面表示
  def search
    @results= Address.find(:all, 
                           :conditions => ["name like ?" ,"%#{params[:keyword]}%"], 
                           :include=> {:employees => :department})
    render :action => 'result.html.erb'
  end  
end

添付ファイル: filedb_t_search1_2.jpg 309件 [詳細] filedb_t_search1_1.jpg 328件 [詳細]

リロード   新規 編集 凍結解除 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-08-08 (水) 23:25:43 (3085d)