更新:我刚刚发现这个其他线程解释了为什么我遇到这个问题(将本地rails变量传递给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”参数的方式存在问题。但我不确定为什么会这样,因为 javascript 不只是将该代码插入到 new.html.erb 中,其中我有带有“add_round”id 的 div 吗?
注意:这是我单击链接时在 javascript 控制台中看到的内容:GET http //0.0.0.0:3000/addRoundLink 500 (Internal Server Error)
jquery.js:8215
谢谢。