在rails中为每个控制器加载Javascript

the*_*ava 10 javascript ruby-on-rails

Rails中每个视图的JavaScript文件

我调查了类似的线程,但我无法抓住.下面是我的application.js文件.

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require vendor
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

我有一个资产管道的目录结构如下.

--javascripts
 -misc // directory
   helper.js
session.js
app.js
application.js
home.js
Run Code Online (Sandbox Code Playgroud)

我如何加载所有页面的misc目录和home.js for HomeController和session.js SessionController.我不想让不需要的JS在每个地方加载.

nic*_*hvi 11

正如Dave您所指出的,您可以使用建议的解决方案来解决他的链接问题,即:

<%= javascript_include_tag params[:controller] %> 
Run Code Online (Sandbox Code Playgroud)

你不得不唯一要记住做,这是命名您的JavaScript资产控制器的名称-这样home.jssessions.js你的情况(如果我没有记错Rails的命名约定).

我已经看到了这样做的其他方法,如果你想在与不同控制器关联的页面上包含一些javascript,无论出于何种原因,这都很有用.我认为,这个答案提供了一个非常优雅的解决方案.

首先,将全局javascripts添加到清单文件中,并将其包含在application.html.erb布局文件中.

<html>
<head>
  # stuff
  <%= javascript_include_tag 'application' %>
  <%= yield :javascripts %>
</head>
<body>
 <%= yield :content %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后在您将加载特定javascripts的视图中添加以下内容:

<% content_for :javascripts do %>
  <%= javascript_include_tag 'your_script' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)