LoginSignup
4
4

More than 5 years have passed since last update.

Rails viewをDRYに書きたい

Posted at

content_tag使える子

あるある

repeat_yourself.html.haml
-# 親のタグの属性が違うだけだけどめんどくさいから、if文で2回書くべ
- if hoge
  .article_hoge.hoge
    %p.hogehgoe
       hogeだったら、hogeクラスとgehoクラスを付けたい
- else
  .article_hoge.not_hoge
    %p.hogehoge
       hogeだったら、hogeクラスとgehoクラスを付けたい

hamlでごちゃごちゃ書くこともできるけど、railsのcontent_tagを使えばいいと思うよ

dont_repeat_yourself.html.haml
- html_attr = {class:"article_hoge hoge"} #属性は別途hashで作っておく、helperとか、モデルとかで。class以外も使える dataとか
= content_tag(:div, html_attr) do
  %p.hogehoge
    hogeだったら、hogeくらすとgehoクラスを付けたい 

if 文で一部しか違わないviewのblockを書きたくないし、見たくない。

modelによってpartialを分ける

repeat_yourself.html.haml
- if model == hoge
  = render 'path/hoge'
- elsif model == geho
 = render 'path/geho'
dont_repeat_yourself.html.haml
= render "path/#{model}"

CoCぽくファイル名とモデルで規約のようにして記述を減らす

4
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4