Rails 和页面特定的 Javascript

tom*_*456 4 ruby-on-rails

好的,我意识到这个问题已被问过很多次,但答案似乎从未解决我对此的问题/疑问。

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

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

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

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

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

mik*_*ked 5

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

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

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

    <%= yield :js %>

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

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

  3. 如果您在生产中使用资产管道并且想要引用特定资产,例如“my_script.js”,则在您的 production.rb 或相关环境 config.you 中,您需要使用以下命令对其进行预编译:

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


Jas*_*Kim 4

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

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

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