returnメソッド/[%w]で文字列の配列を作る/[%i]シンボルの配列を作る/ransackが提供するsort_linkヘルパー
returnメソッド
returnはメソッドの途中で脱出する場合に使われることが多い。
(例) def greeting(country) # countryがnilならメッセージを返してメソッドを抜ける return 'contryを入力してください' if country.nil? if country == 'japan' 'こんにちは' else 'hello' end
[%w]で文字列の配列を作る
[%w]を使用することで、「,」,「""」を使用しなくてよくなり、コードが短くなる。
array = %w(a b c) => ["a", "b", "c"] ary = %w[a b c] => ["a", "b", "c"]
[%i]でシンボルの配列を作る
array = %i(name age) => [:name, :age] array.class => Array
ransackが提供するsort_linkヘルパー
sort_linkヘルパーは見出し部分のソート機能を実装することができるヘルパーです。 第1引数にコントローラーから呼び出されたRansack::Searchオブジェクト。 第2引数にソートを行う対象のカラム してします。
<%= sort_link(@q, :name, default_order: :desc) %> ※デフォルトで昇順ソートができますが、まず降順ソートしたかったので、第3引数に[default_order: :desc]を指定して、クリックしたときに降順から始まるようにしています。
sort_linkでは、複合的な条件のソートにも対応ができます。
「まずは名称
だけをソートして、同じ名称に関しては登録日時順
にソートしたい」という場合。
<%= sort_link(@q, :name, [:name, "created_at desc"]) %>
複数の[default_order]もハッシュでしてできる。
この例では、両方のフィールドのソート方向を切り替えます。デフォルトでは、最初はlast_nameフィールドを昇順でソートし、first_nameフィールドを降順でソートします。
<%= sort_link(@q, :last_name, %i(last_name first_name), default_order: { last_name: 'asc', first_name: 'desc' }) %>