5

好的,我意识到这个问题已经被问过很多次了,但答案似乎从来没有解决我遇到的问题/问题。

我有一个 js 文件,我只想包含在特定页面上。有很多回复建议我将文件放入文件夹中,然后在清单文件中仅引用这些文件夹 - 例如这个 Railscast(大约 06:20)谈到了这一点。

但是,我只有一个应用程序布局文件(我想这可能是我缺少的区域) - 因此该文件指向 application.js 清单,因此我看不到如何有条件地包含内容。

它也有点像这个资源 - http://railsapps.github.io/rails-javascript-include-external.html - 向下滚动到特定于页面的脚本子标题,它重复了 Railscast 的建议。但是没有提到多个应用程序布局文件。

如果有人可以帮助我澄清在这种情况下该怎么做,我将不胜感激。

我也许应该指出我正在使用 Rails 4。

4

2 回答 2

5

当要呈现所述视图时,您可以在视图中使用 content_for 将内容“注入”到布局中。请参阅:使用内容换方法

你需要做一些事情来实现这一点:

  1. 添加占位符以产生布局中的内容。前任。

    <%= yield :js %>

  2. 将块(要生成的)添加到您的视图中。前任:

    <%= content_for :js do %> <%= javascript_include_tag "my_script" %> <% end %>

  3. 如果您在生产中使用资产管道,并且想要在您的 production.rb 或相关环境配置中引用特定资产(如“my_script.js”)。您将需要使用以下方法对其进行预编译:

    config.assets.precompile=["my_script.js"]

于 2013-09-10T19:13:12.917 回答
4

application.html.erb中,使用它来添加控制器特定的 javascript 而不是应用程序特定的 javascript。确保删除require_tree.

<%= javascript_include_tag params[:controller] %>

在Rails 指南上阅读有关此主题的更多信息。

于 2013-09-10T17:19:00.920 回答