カテゴリー:
Rails
タグ:
 Rails view bool

このエントリーをはてなブックマークに追加
更新日時:
2014年04月16日(水)
作成日時:
2014年04月16日(水)

前の記事 / 次の記事

RailsのViewには引数を渡せる。
例えば次のように使える。

-# views/articles/index.html.haml
=render "navbar", type: "horizon"

-# views/shared/navbar.html.haml
- type ||= "vertical"
%ul.navbar{ class: type }
  %li なんたらー
  %li かんたらー

で、引数がbool値じゃない時は問題ないんだけど、
引数がbool値の時はちょっと変な動作をする。
例えば次のような時、

-# views/articles/index.html.haml
=render "navbar", type: "horizon", extension: false

-# views/shared/navbar.html.haml
- type      ||= "vertical"
- extension ||= true
%ul.navbar{ class: type }
  %li なんたらー
  %li かんたらー
  - if extension
    %li なんとかー
    %li かんとかー

extensionは必ずtrue になる。
なんでか?falseを渡すとfalseが偽として判定されて偽であるならば右辺が入るから。

まあ、よく考えたら普通なんだけど、そこはそうならないように
なっていて欲しかったなと思いつつもそうなっているから仕方ない。

これは次のようにすれば初期化できる。

-# views/articles/index.html.haml
=render "navbar", type: "horizon", extension: false

-# views/shared/navbar.html.haml
- type      ||= "vertical"
- extension = (extension == false ? false : true)
%ul.navbar{ class: type }
  %li なんたらー
  %li かんたらー
  - if extension
    %li なんとかー
    %li かんとかー