繁体   English   中英

如何从js.erb文件传递部分html.erb表单而不是仅传递消息?

[英]How to pass a partial html.erb form from js.erb file instead of just a message?

我正在尝试在Rails应用程序的示例红宝石上实现jquery。 我刚刚开始探索js。 我知道我在js / jquery中有很多东西要学习。 现在有一些我坚持的东西。

我有一个js.erb文件,如下所示:

js.erb

<% if @phone_number.verified %>
  $('#verify-pin').hide()
  $('#status-box').removeClass()
  $('#status-box').addClass('alert alert-success')
  $('#status-message').text('Verified!!')
<% else %>
  $('#status-box').removeClass()
  $('#status-box').addClass('alert alert-warning')
  $('#status-message').text("Sorry, that wasn't the right pin.")
<% end %>
$('#status-box').fadeToggle()

如果您看到第五行,那么现在我只是在闪烁一条文本消息“ Verified !!”。 当条件为真时。 但是我想显示部分erb形式。 我有一个_form.html.erb文件。 如何显示此内容而不是短信?

您使用escape_javascript方法。

$('#status-message').html("<%= escape_javascript(render 'form) %>");

它也被别名为j

$('#status-message').html("<%= j(render 'form) %>");

显然,您可能想对此做更多花哨的事情,但这是基本思想。

虽然您确实有.js.erb并可以在JS中直接使用erb,但我想展示一种变通办法,该变通办法适用于那些没有.js.erb的人(例如,具有.coffee格式),并且适用于所有构建堆栈。

在application.html.erb中,添加一个脚本标记并初始化一个全局变量,然后在需要时可以使用该变量附加部分。 像这样:

<script>
    partials = {
        foobarPartial: '<%= escape_javascript(render partial: 'foobar', :locals => { :local_var_1 => false, :local_var_2 => 'foo' }) %>'
    };
</script>

然后,每当需要该部分时,只需通过.html(partials.foobarPartial)添加它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM