使用Rails,如何在应用程序的特定页面上执行javascript文件?

时间:2017-01-16 15:20:12

标签: javascript ruby-on-rails

我正在尝试将javascript文件加载到我的rails应用程序中,但仅适用于我的应用程序中的特定页面,而不是主页。如何使用rails来加载我的javascript文件以加载特定页面。

我现在拥有的javascript,位于assets / javascript中的programs.js中,如下所示:

document.addEventListener('DOMContentLoaded', (event) => {
 let program = document.getElementsByClassName('program-name')
 console.log(program)
 })

再次,代码本身工作正常。问题是它是为主页执行的,而不是我想要的任何特定页面。我如何在rails应用程序中获取特定页面的代码?

2 个答案:

答案 0 :(得分:3)

为什么不将javascript标记添加到您希望它运行的视图中?

如果您想要更好的渲染速度,可以在布局中添加页面结束率,然后在视图中指定您的javascript,如下所示:

布局/ application.html.erb

<!DOCTYPE html>
...
  <%= yield(:scripts) %>
</body>
</html>

视图/.../ index.html.erb

<!-- regular view code here -->
...

<% content_for :scripts %>
  <%= javascript_tag do %>
    document.addEventListener('DOMContentLoaded', (event) => {
      let program = document.getElementsByClassName('program-name')
      console.log(program)
    });
  <% end %>
<% end %>

答案 1 :(得分:1)

另一种方法是执行以下操作:

应用/视图/布局/ application.html.erb

if($('body').is('.yourcontroller.youraction'){
  // Do something
}

然后,在您的脚本文件中,您可以执行以下操作:

h1 { margin-top: 100vh; }