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]を指定して、クリックしたときに降順から始まるようにしています。

ransackが提供するsort_linkヘルパー

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' }) %>