簡體   English   中英

我可以在Ruby on Rails中使用javascript局部語言嗎? 部分試圖在HTML中呈現

[英]Can I have a javascript partial in Ruby on Rails? Partial is trying to render in HTML

我有一個函數,可以簡單地選擇當前頁面上的所有復選框,創建一個表單,然后自動提交。

我不想在每個視圖上重復相同的確切javascript代碼,而是嘗試僅使用共享的部分代碼。

到目前為止,這是我的全部:

#views/shared/_delete_multiple_items.js.erb
alert("<%= random_variable %>");

#views/users/index.html.erb
...
<script>
  function deleteMulitpleUsers() {
    <%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>
  }
</script>

如果我正確理解此錯誤,看起來Rails嘗試在HTML中呈現部分內容:

缺少{:locale => [:en] 、: formats => [:html] 、: variants => [] 、: handlers => [:raw,:erb,:html,:builder 、:紅寶石,:咖啡,:jbuilder]}。 在以下位置搜索:

我試圖在渲染中包括:formats => :js ,如下所示:

<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World", :formats => :js %>

但我仍然得到相同的確切錯誤。 任何幫助將不勝感激。

您是否嘗試過在js.erb文件中添加aj?

#views/shared/_delete_multiple_items.js.erb
alert("<%= j random_variable %>");

由於服務器響應格式是html,而不是javascript,因此收到該錯誤。 設置響應格式是在控制器中完成的,因此將format: :js放入模板中將無法工作。 嘗試這些步驟,看看它們是否對您有用。

  1. _delete_multiple_items.js.erb重命名為_delete_multiple_items.html.erb

  2. alert("<%= random_variable %>"); <script>標記內

  3. index.html.erb ,刪除所有與js相關的代碼,然后執行<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>

更改此:

<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>

對此:

<%= render partial: 'shared/delete_multiple_items', formats: :js, :locals => {:random_variable => "Hello World"} %>

partial:開始告訴Rails尋找局部和formats: :js告訴Rails尋找js文件(注意formats不是locals的子代)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM