更新:この問題が発生している理由を説明するこの他のスレッドを見つけました(ローカルレール変数をjavascriptに部分的に渡す)が、それを修正する手順がリストされていませんでした(または、少なくともスキップした手順が多すぎます)方法はまだわかりません。問題は、パーシャルがクリック イベントまでロードされないため、パーシャルに渡されるローカル変数が、new.html.erb がロードされたときに存在していたローカル変数と同じではないことです。 . それを回避することは可能ですか?ありがとう。
オリジナル:
リンクに関連付けられたクリック イベントが時々しか機能しないのですが、その理由がわかりません。ページをリロードせずにリンクをクリックすると、パーシャルがビューにレンダリングされるはずです。
これは私が現在持っているものです(これは機能していません):
comps_helper.rb:
def addRound(f)
render "add_round", f: f
end
comps/new.html.erb
<div id="add_round"></div>
<%= link_to "Add round", addRoundLink_path, remote: true %>
addRoundLink.js.erb
$("#add_round").html("<%=j addRound(f) %>");
何が機能しますか:
<%= addRound %> を使用して、new.html.erb から直接ヘルパー メソッドを呼び出すだけで動作します。しかし、ユーザーがフォームに好きなだけセクションを追加できるように、リンクがクリックされたときにトリガーされる必要があります。
上記のコードに「f」パラメーターが含まれていない場合、JavaScript はクリック時に機能します。たとえば、パーシャルを変更してテキストの文字列だけを含めると、リンクがクリックされたときにそのテキストがレンダリングされます。これは、javascript に「f」パラメーターを含めた方法に問題があると思わせます。しかし、「add_round」IDのdivがあるnew.html.erbにjavascriptがそのコードを挿入するだけではないので、なぜそうなのかわかりませんか?
注: リンクをクリックすると、JavaScript コンソールに次のように表示されます: GET http //0.0.0.0:3000/addRoundLink 500 (Internal Server Error)
jquery.js:8215
ありがとう。