簡體   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