[英]Execute javascript on html partial render in Ruby on Rails
[英]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
放入模板中將無法工作。 嘗試這些步驟,看看它們是否對您有用。
將_delete_multiple_items.js.erb
重命名為_delete_multiple_items.html.erb
放alert("<%= random_variable %>");
在<script>
標記內
在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.