更新:我刚刚发现了这个解释为什么我会遇到这个问题的线程(Pass local rails variable to javascript to partial),但它没有列出修复它的步骤(或者至少跳过了太多我还不知道如何做的步骤)。问题似乎是将本地变量传递给局部变量时,该本地变量不再是加载new.html.erb时存在的同一本地变量,因为在单击事件之前未加载局部变量。有可能绕过它吗?谢谢。
原文: 我有一个与链接绑定的点击事件,只有在某些情况下才能正常工作,我不确定为什么。它应该在单击链接时将局部渲染到我的视图中,而无需重新加载页面。
这是我目前拥有的(不起作用):
comps_helper.rb:
原文: 我有一个与链接绑定的点击事件,只有在某些情况下才能正常工作,我不确定为什么。它应该在单击链接时将局部渲染到我的视图中,而无需重新加载页面。
这是我目前拥有的(不起作用):
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) %>");
有效的方法:
如果我直接在new.html.erb中使用<%= addRound %>调用帮助方法,那么它可以工作。但是我需要在链接被点击时触发它,以便用户可以根据需要添加表单的多个部分。
如果上面的代码不包括"f"参数,则javascript可以通过点击工作。例如,如果我更改局部文件,使其只包含文本字符串,则在单击链接时将呈现该文本。这使我认为在javascript中包含“f”参数存在问题。但是我不确定为什么会这样,因为javascript难道不只是将该代码插入到new.html.erb中,我在该文件中有一个带有“add_round”id的div吗?
注意:当我单击该链接时,在我的javascript控制台中看到以下内容:
GET http //0.0.0.0:3000/addRoundLink 500 (Internal Server Error)
jquery.js:8215
谢谢。