やりたいこと
非同期処理と言えばajaxですが、RJS(.js.erb)ファイル内でcontrollerから引き継いだインスタンス変数を展開したい。
やりかた
indexで@userを作っていると仮定。
formの条件によって@userにどのユーザーdataが入るか変わるみたいな・・・。
controller.rb
def index
・・・
・・・
@user = User.find_by(〜〜〜〜)
end
index.js.erb
var username = <% @user.name %>
これでusername
に@user.name
が格納。
いつ使うのか
こんな感じの使われ方するかも?
index.html.erb
<div id="description#{@user.id}">未実施</div>
index.js.erb
var userid = <% @user.id %>
$(`#description${userid}`).text("実施済み");
remote: true
のフォームを送ると、非同期的に「未実施」 → 「実施済み」になるみたいな。
原理は
テンプレートで使う.html.erbと同じ埋め込みRuby(ERB)なので、原理は同じという考え方でOKなはずです。