Rails3系でcontent_tagのネストを行う

2015-04-14

ビューが重くなってきて、ヘルパーに色々寄せようとしたときに

ハマったのでめもっとく。

メモ

次のようにネストさせてもどうにもうまくいかなかった。

content_tag :div do 
  'hogehoge'
  content_tag :span do
  'say';
  'uhouho'
  end
end

uhouhoしか表示されない。

無理やり文字列操作にしてhtml_safeで出力させようかとおもったけど、

railsのxss対策がダメにしてしまいそうで、やめときました。

なんとかネストできる方法を調べてみると次の方法がありました。

content_tag :div, :class => 'test' do 
  concat 'hogehoge'
  concat ( content_tag :span , :class => 'content' do
    concat 'say'
    concat 'uhouho'
  end)
end

どうやらコンカチすればいけるようです。

業務系SE時代にコンカチ、コンカチゆってるおっさんが大勢いたので、

ふとなつかしくなるメソッドです。

rubyの配列のconcatを使うよりも

rails/action viewのメソッド使った方が便利っす。

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-concat

参考サイト

http://detham.tumblr.com/post/37466031738/content-tag-tip
http://robots.thoughtbot.com/post/9123352587/nesting-content-tag-in-rails-3

#Rails