質問: ### 前提・実現したいこと ruby on rails4にて一覧の絞り込み検索機能を作成しています。 画面に、「A」「B」「C」「D」...という頭文字を選択するボタンがあり、それぞれのボタンを押下すると、絞り込みが行われるようにしたいと思います。 例: 「A」ボタン押下→一覧には「A」から始まるものの名前のみに絞り込まれる と言う感じです。 ### 発生している問題 上記のようなことを実装するには、アクションは何になるのでしょうか。 また、アクションには、一覧のデータを取得する記述のみでいいのでしょうか。 そもそも、アクションなどには書かず、javascriptで制御するのでしょうか。 初心者のため、かなり初歩的なことを聞いて申し訳ないのですが、 如何にもこうにもうまくいかず困っております。 いい書き方をお聞かせ願えないでしょうか。 よろしくお願いします。
回答: 以前、Railsを学習する際に、伊藤淳一さんが訳されたRSpecによるRailsテスト入門に、住所録が題材とされておりました。 住所録は、A〜Zまでのボタンがあり、該当する方を表示するように創られています。 本件の解決に役立つかと思いましたので、コードを引用いたします。 (自分のコードが本来だとは思いますが、差し支えがあるようであれば、削除願います。) ``` # app/views/layouts/application.html.erb # A-Zまでのボタン作成 <% ('A'..'Z').each do |letter| %> <%= link_to letter, contacts_path(letter: letter) , class: 'btn btn-default' %> <% end %> ``` ``` # app/controllers/contacts_controller.rb def index @contacts = Contact.by_letter(params[:letter]) end ``` ``` # app/views/contacts/index.html.erb <% @contacts.each do |contact| %> <%= contact.name %> <% end %> ``` ``` # app/models/contact.rb def self.by_letter(letter) where("lastname LIKE ?", "#{letter}%").order(:lastname) end ``` オリジナルはGitHub上に公開されています。 Rails 5.0での実行に当たっては、これでもう怖くない!?Rails 4.1からRails 5.0にアップグレードする手順を動画付きで解説しますを参照されて下さい。