ajax呼び出しの一部として、埋め込みrubyを使用して、.js.erbファイルでjqueryselectのid部分を生成しようとしています。以下は私がそれを機能させる方法ですが、サーバー上にjqueryセレクターを構築する代わりに、少し手を使ってブラウザーでjavascriptを取得し、IDをセレクターに連結する必要がありました。
$("tr.design#".concat(<%= @form_column.form_row.id.to_s %>)).html("<%= escape_javascript( render(:partial => "form_rows/row") ) %>")
私はいくつかの組み合わせを試しました:
$(<%= escape_javascript("tr.design#" << @form_column.form_row.id.to_s) %>)
$(<%= "tr.design#" << @form_column.form_row.id.to_s %>)
$("tr.design#<%= @form_column.form_row.id.to_s %>")
いずれの場合も、クライアントに返されたセレクターは$(tr.design#17)(引用符なし)であったため、クライアントで希望どおりに実行されませんでした。つまり、jqueryは一致するものを見つけられませんでした。
この.html("<%= escape_javascript( render(:partial => "form_rows/row") ) %>")
部分はブラウザに正しく送信されました。つまり、<%= ...%>は期待どおりに動作し、ブラウザのjavascriptは、.html関数で渡された適切にフォーマットされ引用された(エスケープされた)htmlを受信しました。
.js.erbファイルで.concatの使用を回避する方法について誰かがアイデアを得ましたか?