Javascript 将可在rails的多个页面中访问的脚本放在何处?

Javascript 将可在rails的多个页面中访问的脚本放在何处?,javascript,jquery,ruby-on-rails,ruby-on-rails-4,dry,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,Dry,我有三个函数,比如add()、subtract()和multiply(),我有两个页面在脚本中使用同一个函数,我希望它把它放在公共的地方,这样就不会重复。我试着把它当作 <script> function add(number) {} function subtract(number) {} function multiply(number) {} </script> 函数add(number){} 函数减法(数){} 函数乘法(数){} 在application.

我有三个函数,比如add()、subtract()和multiply(),我有两个页面在脚本中使用同一个函数,我希望它把它放在公共的地方,这样就不会重复。我试着把它当作

<script>
function add(number) {}
function subtract(number) {}
function multiply(number) {}
</script>

函数add(number){}
函数减法(数){}
函数乘法(数){}

在application.html.erb中,但它在所有页面中都可用。因此,我希望它只能访问这两个页面。我应该在哪里使用,如何使用

使用Add()、subtract()和multiply()函数创建一个单独的js文件,并将此js文件链接到两个页面。

在视图中编写脚本不是在使用rails资产管道。如果你看,上面写着

资产管道连接资产,这可以减少浏览器呈现网页的请求数量。Web浏览器的并行请求数量有限,因此请求越少,应用程序的加载速度就越快。

所以你应该使用它

您能做的是创建一个单独的文件,比如说更新app/assets/javascript目录中的_details.js,然后通过

//= require update_details
或者如果您有//=require_树。在application.js中,它将自动加载app/assets/javascript文件夹中的所有js文件,因此您无需单独要求更新详细信息。之后,您可以使用

<%= javascript_include_tag "application" %>

不引人注目

你似乎没有抓住重点- 将这些函数放入一个Javascript文件中,您将从希望其运行的页面调用该文件

Rails通过应用程序的
布局来实现这一点:

#app/views/layouts/application.html.erb
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
因为
application.js
是从您的布局中调用的,所以使用该布局的任何页面都可以使用Javascript功能

--


您肯定应该

显示错误,如资产被过滤掉,并且不会被提供:将
Rails.application.config.assets.precompile+=%w(update_details.js)
添加到
config/initializers/assets.rb
@Logesh,该错误解释了您必须做些什么才能使其工作谢谢。我理解并且已经添加了Rails.application.config.assets.precompile+=%w(jquery.inview.min.js),我可以简单地将更新_details.js附加到其中吗?谢谢。我将使用它,使用后我将标记为答案。
Rails.application.config.assets.precompile += %w( jquery.inview.min.js  update_details.js )    
#app/views/layouts/application.html.erb
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
#app/assets/javascripts/application.js
function add(number) {}
function subtract(number) {}
function multiply(number) {}