【Ruby on Rails】local_assignsメソッドの使い方

Ruby on Rails

local_assignsとは

local_assignsはRailsのビューヘルパーメソッドです。

パーシャルテンプレートにローカル変数を引数として渡した時、定義された全てのローカル変数をハッシュで返します。

使い方

shared/_article.html.slimfull、articleのローカル変数を渡します。

= render 'shared/article', full: true, article: @article

byebuglocal_assignsの挙動を確認してみます。

(byebug) local_assigns
#=> {:full=>true, :article=>#<Article id: 6, title: "foge", body: "あいうえおかきくけこ", created_at: "2021-12-25 05:33:16", updated_at: "2021-12-26 05:33:26">}

定義されたローカル変数full、articleをハッシュで返します。


(byebug) local_assigns[:full]
#=> true

local_assigns[key]keyの値を返します。


(byebug) full
#=> true

ちなみに、fullだけでも結果は同じです。

じゃあ、なぜ使用するのか?

  • 変数が渡されたかチェックできる
  - if local_assigns[:full]
    = simple_format article.body  # fullにtrueを渡した時の処理
  - else
    = truncate article.body       # fullになにも渡してない時の処理

local_assignsを使用すると、特定の変数を渡した時の処理、渡してない時の処理をまとめて記述できます。

また、ローカル変数をすべて宣言する必要なしパーシャルを使えるようになります。

  • 変数を渡さなかった時に|| 値で別の値をセットできる。
full = local_assigns[:full] || false

local_assigns[:full]に変数を渡さなかった(nil)時に、fullfalseが代入されます。

まとめ

Railsガイドに軽くですが説明してあるので、参考にしてください。

レイアウトとレンダリング - Railsガイド
Action ControllerとAction Viewが提供する基本的なレイアウト機能について解説します。画面出力 (レンダリング) とリダイレクト、content_forブロックとパーシャル (部分テンプレート) の使用方法についても解説します。

また、英語ではありますがこの記事と同じ内容の質問がされているのでこちらも参考にしてください。

コメント

タイトルとURLをコピーしました