やろうとしたことは
- Facebookのタイムラインのように、スクロールした際にajaxでリクエスト
- 部分テンプレ返してもらって描画
そうすると 複数回テンプレが描画されてしまって困った というやつです。
知ってればなんてことないのですが、知らなくて無駄にハマったのでメモ。
一応あまりバージョン関係ないと思うのですが、Rails4.1とRuby2.1.2で書いてます。
--
もともと私が書いていた描き方が
# controller
html = render_to_string partial: 'layouts/more_somethings', collection: [@hoge, @fuga]
render json: { html: html }
これをajaxで受け取ってました。
ただ、これだとmore_somethingsが同じものが2回呼び出されてしまいます。
下記が正解
# controller
html = render_to_string partial: 'tag/more_somethings', locals: { hoge: @hoge, fuga: @fuga }
render json: { html: html }
知ってれば、というかちゃんと調べてれば問題なかったのですが。。
collectionは確かに複数変数を渡せますが、渡した数だけpartialをrenderするという特徴があります。
なので上記の場合2回renderされてしまうということが起こってました。。