月はじめにRailsで作成したWebアプリにて、テーブルの中身を各カラムによって並べ替え可能にするために必要な手順をメモしておきます。テーブルの各カラム名をクリックすることで、並べ替えできるようになります。以降に載せている手順はこちらのサイトに書いてある手順を参考にしています。2.2.0以降では、並び替えたいテーブルがあるページのURLは192.168.33.11:3000/users192.168.33.11:3000/usersにあるテーブルはName、E-mailカラム(データベース上のテーブルのカラム名はname、email)を持つやりたいこと以下のように、テーブルのカラム名をクリックした時にそのカラムを元にテーブル内容を並べ替えます。カラム名をクリックすると、昇順、降順が切り替わります。この動作は、テーブルの各カラムに、「並び替えた状態のテーブルを含む同URLへのリンク」を設定することで機能します。具体的には、今回のように並び替えたいテーブルがあるページのURLが192.168.33.11:3000/usersの場合は、カラム名の「Name」にはhttp://192.168.33.11:3000/users?direction=desc&sort=nameというリンクを設定しています。このリンクをみてわかるように、URLにdirection=並び替え順&sort=並び替え元となるカラム名という形でURLクエリパラメータを付与しています。これによって並び替え順と並び替え元なるカラム名を指定しています。テーブルの各カラムに「並び替えた状態のテーブルを含む同URLへのリンク」を設定するためにHelperにメソッドを追加します。ControllerとViewをHelperに追加するメソッドに合わせて修正します。以降でController、Helper、Viewそれぞれの修正についてメモします。Controllerの修正はじめに並べ替え順(asc、desc)と並べ替え元となるカラム名のデフォルト値を返し、また値が正常であるかを確認するためのメソッド、sort_directionとsort_columnをapp/controllers/users_controller.rbにprivateメソッドとして追加します。endどちらのメソッドもSQLインジェクションを防ぐために受け取ったパラメータが正常であるかを確認しています。具体的には、sort_directionではViewから受け取るparams[:direction]がasc、もしくはdescのどちらかに含まれるかを三項演算子を使用して判定しています。params[:direction]が指定されていない場合はascとなります。デフォルトの状態ではascで並び替えられたテーブルが表示されます。sort_columnにおいても同様に、Viewから受け取るparams[:sort]が実際に存在するカラム名であるかを三項演算子を使用して判定しています。params[:sort]が指定されていない場合はnameで並び替えます。デフォルトの状態ではnameカラムで並び替えられたテーブルが表示されます。sort_direction)を追記します。Railsドキュメントそして最後にHelperメソッドからsort_direction、sort_columnを使用できるように以下の記述をControllerの一番上に追記しておきます。:sort_direction以上でControllerの修正は完了です。続いてapp/helpers/application_helper.rbに以下のsortableメソッドを追加します。endsortableは、引数を2つ受けます。第1引数は並び替え元となるデータベース上のテーブルのカラム名、第2引数はViewに表示するカラム名です。データベース上のテーブルのカラム名とViewに表示するカラム名が同じでよければ、第2引数は省略可能です。実際の使用例は以降にメモしています。descを付与するようにしています。このcssクラスを好みで修正し、例えば上三角画像や下三角画像を表示するようにすれば、現在どのカラム名で昇順、降順どちらで並び替えているかがわかりやすくなると思います。詳しくは冒頭に載せた参考URLに載っています。上記のメソッドの理解に参考になるサイトを以下にメモしておきます。最後にViewのテーブルのカラム名部分に上で追加したsortableを使用するように修正します。%>上記のように、、でsortableメソッドを使用しています。"name"がデータベース上のカラム名、"Name"がViewで表示されるカラム名になります。第2引数の"Name"を省略した場合は、Viewで表示されるカラム名も"name"になります。間違いやより良い方法などがありましたら教えて頂ければと思います。新しいWebアプリケーションを作った時にテストとしてブラウザの操作を自分で行うことがあると思います。大規模なアプリケーションとなると操作する回数も増え大変になってしまいます。LinuxでUbuntuを使いはじめ、その中にrbenvとruby環境を構築したのでその手順をメモします。Googleスプレッドシートを自分で作成したRubyコードから読み込んだり、書き込んだりするためのコードについてまとめます。16:29はじめまして、とても参考になる記事を有難うございます。親モデルのShowメソッド内で子モデルの一覧を表示した場合にソート機能を作る方法を教えて頂けませんでしょうか。店舗ごとのページで商品の一覧を表示するようなイメージです。お忙しいところ恐れ入りますが、ご教示頂けますと幸いです。16:30はじめまして、とても参考になる記事を有難うございます。親モデルのShowメソッド内で子モデルの一覧を表示した場合にソート機能を作る方法を教えて頂けませんでしょうか。店舗ごとのページで商品の一覧を表示するようなイメージです。お忙しいところ恐れ入りますが、ご教示頂けますと幸いです。コメントをキャンセルメールアドレスが公開されることはありません。virtualiment。