如何用Rails中的JS用资源管道替换文件<script>的结尾?

时间:2016-11-06 23:11:46

标签: javascript ruby-on-rails asset-pipeline ruby-on-rails-5

所以我有一个HTML文件,我将转置到我的Rails应用程序中的ERB视图。

&#xA;&#xA;

但是,在HTML中,我有一个JS的片段必须最后运行(在其他所有内容之后),因为它处理页面滚动的方式。

&#xA;&#xA;

所以我们拥有所有HTML,然后就在&lt之前; / body&gt; ,我有:

&#xA;&#xA;
 &lt; script&gt;&#xA; //控制滚动条的一些很棒的JS&#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA;

但我还没弄明白如何制作它可以在资产管道中按照Rails惯例正常工作。

&#xA;&#xA;

这个文件是我的 Home#Index ,这是我的应用程序的营销网站对于未登录的用户。

&#xA;&#xA;

如果我将此&lt; script&gt; 标记放在管理此的布局顶部主页#Index ,它不起作用。

&#xA;&#xA;

如果我把这个JS移到我的 app / assets / javascripts / home.js里面也不起作用,因为它在加载 application.js 之前加载 home.js

&#xA;&#xA;

我也不想把它放在 application.js 中,因为它会干扰我的应用程序中同样命名的其他类。

&#xA;& #xA;

如果不在 app / vie中执行&lt; script&gt; JS&lt; / script&gt; ,最好的RAILSy方法是什么? ws / home / index.html.erb ,因为这感觉不对。

&#xA;

1 个答案:

答案 0 :(得分:1)

以下步骤可以解决您的问题:

step:1 app/views/home/index.html.erb (provide source of JS.)

<%= javascript_include_tag 'custom/xyz.js', 'data-turbolinks-track' => true %>

step 2: assets/javascrips/custom/xyz.js (JS goes here)

$(function(){
  //js code goes here
});

step 3: application.js  (the require_directory directive which includes all JavaScript files only in the directory specified, without recursion.)

//= require_directory .

step 4: application.rb

config.assets.precompile += %w(custom/*.js)