OneDay

40歳からプログラマとして生活しています。

Railsのviewファイル、trueの時だけcss追加

Bookモデルの件数が3件以上であれば、cssにfont-weight:boldを追加したいような時がある。以前の私はこのように条件分岐していた。

  <% if @book.count >= 3  %>
    <p style="font-size:15px;font-weight:bold;">
      <%=@book.count %>件あります
    </p>
  <% else %>
    <p style="font-size:15px;">
      <%=@book.count %>件あります
    </p>
  <% end %>

単にp要素のstyleにfont-weiht:bold;を追加したいだけなのにもっと簡略化できないか。
if条件式をpryで試してみる。都合のよいことにfalseの場合nilが返る。

[1] pry(main)> "a" if true
=> "a"
[2] pry(main)> "a" if false
=> nil


ということは、冒頭のコードはこのように書き換えることができる。

  <% val = "font-weight:bold;" if @book.count >= 3  %>
  <p style="font-size:15px;#{val}">
    <%=@book.count %>件あります
  </p>