首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从html.erb文件而不仅仅是消息传递部分js.erb表单?

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

Stack Overflow用户
提问于 2017-05-03 08:08:35
回答 2查看 240关注 0票数 0

我正在尝试在rails应用程序上实现jquery。我刚开始研究js。我知道在js/jquery中有很多东西需要学习。现在有件事我被困住了。

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

js.erb

代码语言:javascript
复制
<% 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()

如果你看到第5行,现在我只是在闪烁一条短信“验证!”当条件为真时。但是,我希望显示一个部分erb表单。我有一个_form.html.erb文件。我怎样才能显示这个而不是一条短信呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-03 08:12:19

您可以使用escape_javascript方法。

代码语言:javascript
复制
$('#status-message').html("<%= escape_javascript(render 'form) %>");

它也被别名为只是j

代码语言:javascript
复制
$('#status-message').html("<%= j(render 'form) %>");

很明显,你可能想用这个做一些更花哨的事情,但这是基本的想法。

票数 3
EN

Stack Overflow用户

发布于 2017-05-03 08:13:44

虽然您确实有.js.erb,并且可以在JS中直接使用erb,但我想给您展示一个解决方案,它适用于那些没有.js.erb的人(例如使用.coffee格式),这将适用于所有构建堆栈。

在您的application.html.erb中,添加一个脚本标记并启动一个全局变量,然后您可以在需要该部分时使用该变量来追加一个分部。如下所示:

代码语言:javascript
复制
<script>
    partials = {
        foobarPartial: '<%= escape_javascript(render partial: 'foobar', :locals => { :local_var_1 => false, :local_var_2 => 'foo' }) %>'
    };
</script>

然后,当您需要该部分时,只需通过.html(partials.foobarPartial)添加即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43754544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档