はじめに
Rails では、かつて replace_html
を使用して部分的なビューの更新を行っていました。しかし、Rails 3 以降では replace_html
は非推奨となり、最新のバージョンでは使用できません。本記事では、replace_html
の代替方法についてまとめます。
replace_html
とは?
replace_html
は、Prototype.js を利用した update
RJS ヘルパーの一部で、指定した要素の内容を置き換えるために使用されていました。
使用例(Rails 2.x の RJS)
page.replace_html 'target', "<p>新しい内容</p>"
しかし、Rails 3 以降では Prototype.js のサポートが削除され、replace_html
は廃止されました。
対応方法
jQuery + html()
を使用する
jQuery を使用して部分更新する場合、html()
メソッドを利用します。
JavaScript(jQuery)を使った更新
$('#target').html('<p>新しい内容</p>');
Rails コントローラーとビュー
# app/controllers/example_controller.rb
respond_to do |format|
format.js
end
# app/views/example/update.js.erb
$('#target').html('<%= j render partial: "new_content" %>');