我正在尝试在rails app上的示例ruby上实现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()
如果您看到第5行,那么我现在只是闪烁一条短信“已验证!!”当条件为真时。但我希望显示部分erb 表单。我有一个 _form.html.erb 文件。如何显示此内容而不是短信?
答案 0 :(得分:3)
您使用escape_javascript
方法。
$('#status-message').html("<%= escape_javascript(render 'form) %>");
它也被别名为j
$('#status-message').html("<%= j(render 'form) %>");
显然你可能想用这个做一些更奇特的东西,但这是基本的想法。
答案 1 :(得分:1)
虽然你确实有.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)添加它