【问题标题】:Render partial from javascript with custom locals使用自定义局部变量从 javascript 渲染部分内容
【发布时间】:2014-01-25 00:41:20
【问题描述】:

如何使用自定义局部变量从 javascript 渲染部分内容?

我确实有这样的事情:

var begin = $("#begin_date").val();
var end = $("#end_date").val();

$("#table").html("<%= escape_javascript(render partial: 'my_partial', locals: { begin_date: begin_d, end_date: end_d}) %>")

所以,我知道 'begin_d' 和 'end_d' 必须是 .erb 才能加载。 是否有传递 javascript 变量以使用自定义本地值呈现部分?或者任何其他方式来达到同样的效果?

我的意图是根据日期刷新表格(如果它们被更改)。

编辑:

我找到了答案。 Phlip 帮助指出我应该使用 Ajax。 所以现在,我向一个简单的控制器发出了一个 Ajax 请求:

respond_to do |format| 
  format.html {render partial: 'my_partial', locals: {begin_date: params[:begin_date], end_date: params[:end_date]}}

【问题讨论】:

  • 澄清一下,是否要将JS变量的值插入到表中,而不是服务器发送的值?
  • 没有。我想传递 JS 值以使用该 JS 值呈现部分。我的意思是,编辑输入值(开始或结束日期)我想触发部分的渲染。该部分的渲染取决于我从输入中获得的 JS 值。希望它澄清。

标签: javascript ruby-on-rails ruby erb


【解决方案1】:

要将 JS 变量发送到 ERB,您必须使用 Ajax。 JS 运行在浏览器中,ERB 运行在服务器中,所以没有办法在那里查找如何使用$('#table').load()。

除非您可以使用 JS 制作自己的新 HTML 的无数种方法中的一种,而无需 ERB。唯一的问题是,如果您还需要在页面加载时从服务器输出相同的 HTML,那么您就不会干了。

【讨论】:

  • 谢谢。在这种特殊情况下,它不会在页面加载时呈现,所以这不是问题,但我不想制作新的 HTML(我有另一个代码,我想让它保持 DRY 并且不能不是因为我不知道 100% 正确的道路)。您能在以下方面帮助我吗?我确实将带有 ajax 的变量传递给控制器​​,对吗?但是,我该怎么办?
  • 从这里开始,几乎任何谷歌搜索引用 [rails jquery ajax 示例] 都足以让你开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多