今日やったこと
html全体の再読み込みではなく、一部のみ書き換える方法(hotwireを利用)
内容
上記を実装したいコントローラ(以下コントローラ)のアクションに下記を記述。
respond_to do |format|
format.html { (実行したい処理) }
format.turbo_stream
end
リクエストがhtmlかturbo_streamかで条件分岐するイメージだと理解しました。
また、アクション名に対応するよう、「<アクション名>.turbo_stream.erb」というファイルも合わせて作成し、下記のような内容を記述。
<%= turbo_stream.update "CSSのid" do %>
(書き換える内容)
<% end %>
使っている教材では、
・フォローした時は「フォロー」ボタンを「フォロー解除」ボタンに変更し、フォロー数を更新する。
・フォローを外した時は「フォロー解除」ボタンを「フォロー」ボタンに変更し、フォロー数を更新する。
という処理を実現していました。
htmlファイルの記述が多くなればなるほど、メリットを実感できそうです。
感想
真っ先にJavaScriptが思い浮かんだのですが、このような方法もあるとは...。
Railsは奥深いですね。