簡體   English   中英

對如何在Ruby on Rails中使用普通JavaScript感到困惑

[英]Confused about how to use vanilla JavaScript with Ruby on Rails

我有兩個視圖,一個稱為儀表板 ,另一個稱為home ,都有各自的index.htm.erb文件。 資產/ javascripts文件夾中的相應JavaScript文件似乎未映射到這些視圖。 例如,當我在home.js中運行警報,然后導航至dashboard.html.erb時 ,警報仍在運行。

我該如何補救才能獲得所需的功能?

我對如何在Rails中編寫頁面特定的原始JavaScript感到困惑。

編輯 :我可以使用公用文件夾,但與此同時存在一些輔助問題,因此為什么我開始使用資產文件夾中的文件。

Rails關於javascript的“觀點”之一是,應將其全部串聯到一個文件( application.js )中,將其縮小並提供給客戶端。 這樣做是為了最大程度地減少訪問應用程序時客戶端需要發出的請求數量(目標是只有三個,一個用於html,一個用於css,一個用於javascript [不包括頁面上的任何圖像。])

如果您查看application.js,則會看到一條注釋,指出該文件是“清單”文件,並且一行如下所示

require_tree .

上面寫着“將該文件夾中的每個javascript文件加載到該文件中”

為了加載某些頁面特定的javascript,您需要

  • 將一個單獨的javascript文件放到app/assets/javascripts [稱其為custom.js]
  • 通過在application.js編寫stub custom存根,將文件加載到應用清單中
  • 在視圖中手動添加自定義javascript(或更可能是呈現視圖的布局): <%= javascript_include_tag 'custom' %>

但是,我建議您考慮一下是否真的需要分離此javascript,或者是否可以通過將腳本僅本地化到其預期的頁面來解決此問題,這將保持相同的功能和保持您的加載時間如此之快。

$('body.some_custom_class').ready(function() { alert('I'm running on this page!'); });

您可以在布局中使用content_for

應用程序/視圖/布局/ application.html.erb

<html>
  <head>
     <title> ...</title>
     ....
     <%= yield :javascript %>
     ....
    </head>
    ....
 </html>

並在您的視圖上app / views / home.html.erb

 <% content_for :javascript do %>
    <%= javascript_include_tag 'home' %>
 <% end %>
 other view content

您還需要查看application.js並刪除//= require tree .

暫無
暫無

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

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