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

Javascript 如何从js.erb文件传递部分html.erb表单,而不仅仅是一条消息?,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我试图在RubyonRails示例应用程序上实现jquery。我刚开始探索js。我知道在js/jquery中我有很多东西要学。现在有一件事让我很为难 我有一个js.erb文件,如下所示: js.erb <% if @phone_number.verified %> $('#verify-pin').hide() $('#status-box').removeClass() $('#status-box').addClass('alert alert-success')

我试图在RubyonRails示例应用程序上实现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()

$(“#验证pin”).hide()
$(“#状态框”).removeClass()
$(“#状态框”).addClass(“警报成功”)
$(“#状态消息”).text('Verified!!')
$(“#状态框”).removeClass()
$(“#状态框”).addClass('alert-warning'))
$(“#状态消息”).text(“对不起,那不是正确的pin。”)
$(“#状态框”).fadeToggle()
如果你看到第5行,现在我只是在条件为真时闪现一条短信“Verified!!”。但是我希望显示一个部分erb表单。我有一个\u form.html.erb文件。如何显示此信息而不是文本消息?

您可以使用此方法

显然,你可能想用这个做一些更奇特的事情,但这是基本的想法。

你使用这个方法


显然,您可能想用它做一些更奇特的事情,但这是基本的想法。

虽然您有.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>

分部={
foobarPartial:“{:local\u var\u 1=>false,:local\u var\u 2=>'foo'})%>”
};

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

当您有.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>

分部={
foobarPartial:“{:local\u var\u 1=>false,:local\u var\u 2=>'foo'})%>”
};

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

以我刚才添加的部分形式进行测试
。变量
@phone_number
存储的数字类似于“3843849394”。但它显示的是内存位置,比如
#PhoneNumber:0x007f85adfc7170
,而不是数字。您可能需要将
文本
更改为
html
。将其更改为“$”(“#状态消息”)。html(“”)`现在显示
#
Ok,那么
@phone\u number
是一个
PhoneNumber
对象,而不是一个数字。是的,但您必须为它提供一些属性,如
@phone\u number.number
或其他内容。你在控制器中是怎么做的?只是为了测试我刚才添加的部分形式
。变量
@phone_number
存储的数字类似于“3843849394”。但它显示的是内存位置,比如
#PhoneNumber:0x007f85adfc7170
,而不是数字。您可能需要将
文本
更改为
html
。将其更改为“$”(“#状态消息”)。html(“”)`现在显示
#
Ok,那么
@phone\u number
是一个
PhoneNumber
对象,而不是一个数字。是的,但您必须为它提供一些属性,如
@phone\u number.number
或其他内容。你在控制器里是怎么做的?
<script>
    partials = {
        foobarPartial: '<%= escape_javascript(render partial: 'foobar', :locals => { :local_var_1 => false, :local_var_2 => 'foo' }) %>'
    };
</script>