Ruby on rails 如何在rails 3.1中显示特定于控制器的javascript?

Ruby on rails 如何在rails 3.1中显示特定于控制器的javascript?,ruby-on-rails,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails,Ruby On Rails 3.1,Asset Pipeline,我的资产文件夹结构如下 assets javascripts products --product.js --productValidate.js store --store.js 我希望project.js和projectValidate.js仅在调用product controller中的操作时添加到my application.js中,作为资产管道内衬的一部分,而在调用store controller中的操作时添加到store.js

我的资产文件夹结构如下

assets
  javascripts
    products
      --product.js
      --productValidate.js
    store
      --store.js

我希望project.js和projectValidate.js仅在调用product controller中的操作时添加到my application.js中,作为资产管道内衬的一部分,而在调用store controller中的操作时添加到store.js中。如何在rails 3.1中实现这一点?

据我所知,pipilene是应该预编译的。所以从概念上讲,它应该一次获取所有文件并只返回一个复制的文件,这有利于缓存


您可以将它们存储在od资产之外的某个地方(例如,在puplic中,就像旧的Rails那样),并根据当前控制器和操作将其包含在中。正如Rahul已经提到的,application.js是预编译的,并且对于每个操作都是相同的。 因此,它不依赖于特定的控制器。Application.js应该包含所有(或大部分)操作所需的javascript

但是,您可以使用嵌套布局展开应用程序布局。让我们假设以下结构:

... app/view/layouts/application.html.erb ...

<html>
<head>
  <%= javascript_include_tag 'application' %>
  <%= yield :javascripts %>
  <%= stylesheet_link_tag 'application' %>
  <%= yield :stylesheets %>
</head>
<body>
  <%= yield %>
</body>
</html>
。。。app/view/layouts/application.html.erb。。。
以及:

... app/view/layouts/products.html.erb ...

<% content_for :stylesheets do %>
  <%= stylesheet_include_tag 'products' %>
<% end %>
<% content_for :javascripts do %>
  <%= javascript_include_tag 'products' %>
<% end %>
<%= render :template => 'layouts/application' %>
。。。app/view/layouts/products.html.erb。。。
'布局/应用程序'%>
因此,您只需在产品文件中添加/要求样式表和Java脚本。 注意,这里的所有代码都应该作为伪代码读取,我没有测试它


信息取自。

我喜欢回答这个问题时提到的方法:

现在,我们要在Rails 3.1资产管道和Jammit之间架起一座桥梁

我没有提供任何文件,因为我认为它还在开发中。 但它基本上应该允许你做什么:

# config/initializers/pakunok.rb
# Define the dependencies between Rails assets:
require 'pakunok'
Pakunok::Pakunok.current.configure do
  asset('products/product.js').needs('products/productValidate.js')
end
然后,在布局中,只需执行一个include。所有相关文件都将自动包括在内

# app/views/layouts/application.html.erb
<%= include_javascripts %>
#app/views/layouts/application.html.erb
请参阅规格,了解宝石可以做什么注意:它仍在开发中,创业板本身将在稍后拆分为多个


对于您希望得到支持的任何特定用例,请和我保证在我有时间的时候努力实现这些用例:)

rails文档建议这样做:

我刚刚看到了railscast 279,其中Ryan提到,v可以通过使用require_目录而不是链轮中的require_树来指定v要添加到application.js文件中的文件夹。我想知道有没有类似的方法来添加特定于控制器的js。Ryan提到要编译的文件夹不在运行时:)这也是我使用的方法。但是我把javascript标记放在
标记的前面。如果你想成为一个好公民,你应该把javascript标记放在结束
标记的前面。