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

* 内容 [#n457e24b]
** 概要 [#o66bc53e]
[[とりあえず基本的なアプリを作成しましょう>Ruby on Railsあれこれ/とりあえず基本的なアプリを作成しましょう]]→[[テーブル結合をしてみましょう>Ruby on Railsあれこれ/テーブル結合をしてみましょう]]で作成したアプリケーションを元にして、住所に関するキーワードを元に従業員情報を検索するサンプルを作成します。

検索条件入力画面(index.html.erb)&br;
&ref(db_t_search1_1.jpg);&br;
↓&br;
検索結果表示画面(result.html.erb)&br;
&ref(db_t_search1_2.jpg);&br;

** サンプルのポイント [#jee31724]
-テーブルの結合を行います。&br;
-あいまい検索を行います。

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

** ファイル構成 [#a8216d10]
本項で作成・変更するファイル&br;
|ファイル名|種類||h
|index.html.erb|ビュー|作成|
|result.html.erb|ビュー|作成|
|address.rb|モデル|変更|
|search1_controller.rb|コントローラー|作成|

** 検索条件入力画面(ビュー) [#aa532ff7]
検索条件入力画面を作成しましょう。
"ror-db-tutorial\app\views\search1\index.html.erb"ファイルを以下の内容で作成します。
#code(ruby){{
<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>
}}

** 検索結果表示画面(ビュー) [#qa987ad0]
検索結果表示画面を作成しましょう。
"ror-db-tutorial\app\views\search1\result.html.erb"ファイルを以下の内容で作成します。
#code(ruby){{
<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モデル [#w0e9dd94]
"ror-db-tutorial\app\models\address.rb"
#code(ruby){{
class Address < ActiveRecord::Base
  has_many :employees
end
}}

** コントローラー [#w1def8d3]
"ror-db-tutorial\app\controllers\search1_controller.rb"ファイルを以下の内容で作成しましょう。
#code(ruby){{
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
}}

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS