ruby-on-rails – 将局部变量传递给在视图加载后呈现的局部变量
更新:我刚刚发现这个其他线程解释了为什么我遇到这个问题(
Pass local rails variable to javascript to partial),但它没有列出修复它的步骤(或者至少它跳过了太多我不知道该怎么做的步骤.)问题似乎是传递给partial的局部变量不再是加载new.html.erb时存在的同一局部变量,因为在click事件之前没有加载partial.有可能解决这个问题吗?谢谢.
原版的: 我有一个点击事件绑定到一个链接只能在某些时间工作,我不知道为什么.在没有重新加载页面的情况下单击链接时,应该将部分渲染到我的视图中. 这是我目前拥有的(不起作用): 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) %>"); 什么工作: >如果我直接使用<%= addRound%>从new.html.erb调用helper方法,它就可以了.但是我需要在单击链接时触发它,以便用户可以根据需要向表单添加任意数量的部分. 注意:当我点击链接时,这是我在javascript控制台中看到的内容: 谢谢. 解决方法
它不起作用,因为f仅存在于您的控制器操作的上下文中.
当用户点击您的链接时,会为您的javascript发出新的HTTP请求.处理此请求的控制器操作与呈现页面的操作不同,因此您需要在此控制器操作中设置f并将其作为本地传递给addRoundLink.js.erb. 示例代码 >我假设f由您的模型对象/实例确定. 在你的控制器中 def add_round model = MyModel.find params[:id] f = model.determine_f render :partial => 'add_round',:locals => { :f => f } end 在你的new.html.erb中 <%= link_to "Add Round",add_round_path(@model),:remote => true %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |