更新:我刚刚发现这个其他线程,解释了为什么我遇到此问题(Pass local rails variable to javascript to partial),但未列出步骤修复它(或者至少它跳过了太多我还不知道该怎么做的步骤)。问题似乎是,传递给局部变量的局部变量不再是new.html时存在的局部变量.erb被加载,因为部分直到click事件才被加载。有可能解决这个问题吗?谢谢。将局部变量传递给视图已经加载后呈现的局部
原文:
我绑一个链接,只能在某些时候click事件,我不知道为什么。当单击链接而不重新加载页面时,它应该呈现给我的视图。
这是我现在有(没有工作):
comps_helper.rb:
def addRound(f)
render "add_round", f: f
end
谱曲/ 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(内部服务器错误)
的jquery.js:8215
谢谢。
感谢。这就说得通了。然而,局部变量'f'实际上只是表单生成器的一部分,部分只包含表单的其他部分(所以我不认为'f'是由我的模型对象/实例确定的,它?)我应该更具体。无论如何要通过这个变量? – Josh
链接中的答案可能会对您有所帮助。你可以将你的模型传递给partial,并在你的partial中使用form_for来获得FormBuilder对象,或者你可以在控制器中实例化一个,然后传入它。http://stackoverflow.com/questions/371147/rails-ajax-my -partial-需求-A-formbuilder实例 – zeikt