俳句野郎

俳句、俳句、プログラミング、俳句。

新人研修でrails。検索フォームを作る。(テキストの部分一致検索機能だけ実装編)

会社の新人研修でrailsの社員検索システムを作りました。

基本的な機能は先輩社員さんにひと通り聞きながら実装できたので、忘れないようにmemoします。

・名前の部分一致検索ができること。
・役割検索ができること。

この二つを実装しました。

rails g scaffoldで、ひな形をもらった状態。memberクラスと、roleクラスがあり、
member belongs_to :role
の関係です。

とりあえず、formに入力された値の部分一致検索機能のみ実装していきます。
・名前の部分一致検索の実装

(1)members_controllerに、searchというメソッドを追加。

def search
@members = Member.where("name like ?" , "%#{params[:name]}%")
render :action => 'index'
end

後にscopeを使うのですが、そこは後から書きます。
画面遷移をして、index.html.erbテンプレートに、@membersに格納したデータを流し込みます。(render :action => 'index'の部分。)

その結果、http://localhost:3000/members/search
のアドレスに検索結果が現れるように実装していきます。

実装って響きマジでいいですね。

(2)routes.rbに、searchのroutingを定義する。
scaffold では、resources :member のみなので、


resources :members do
collection do
post 'search'
end
end

とします。

最後に、入力フォームをとsubmitボタンを作りたいと思います。
(3)index.html.erbに、入力フォームを作る。

<%= form_tag(:controller=>'members', :action=>'search') do %>
<%= text_field_tag :name %>
<%= submit_tag "検索" %>
<% end %>

今回はで、membersモデルに対応するフォームを作っているわけではないので、引数にcontrollerと、呼び出すメソッドの名前を指定します。<%= text_field ' ', :name %>は、htmlに直すと、

になります。
この状態で検索ボタンを押すと、nameにtext_fieldに入力したものが入って、params[:name]でそれを検索できるようになるらしいです。うまく言語化できない。
searchメソッドで定義してるとこです。

仕事でコードを書くことが少なくなりそうなので、なるべく勉強を怠らないようにしたいと思います。
次は

参加グループ