Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在某些页面上运行脚本-rails_Javascript_Ruby On Rails_If Statement_Controller - Fatal编程技术网

Javascript 如果在某些页面上运行脚本-rails

Javascript 如果在某些页面上运行脚本-rails,javascript,ruby-on-rails,if-statement,controller,Javascript,Ruby On Rails,If Statement,Controller,在每个页面加载上运行if语句来检查是否应该运行脚本,这是一个坏主意。例如,我有一个很长的javascript文件,只有在使用表单时才需要运行它。但目前在我的每个文件中,我都包含了document.addEventListener(“turbolinks:load”,function(),这意味着它在每次页面加载时都会运行 在我的脚本中,我很想在文件开头写一条if语句,如下所示: document.addEventListener("turbolinks:load", function() {

在每个页面加载上运行if语句来检查是否应该运行脚本,这是一个坏主意。例如,我有一个很长的javascript文件,只有在使用表单时才需要运行它。但目前在我的每个文件中,我都包含了
document.addEventListener(“turbolinks:load”,function()
,这意味着它在每次页面加载时都会运行

在我的脚本中,我很想在文件开头写一条if语句,如下所示:

document.addEventListener("turbolinks:load", function() {
  controller = $('body').data('controller')
  action = $('body').data('action')
  if controller == foo && action == bar 
    runScripts();
  else
    return;
  function runscripts() {
    ...

我对在rails中使用javascript还是有点陌生,所以我不知道其他的方法。有什么建议吗?

您可以使用控制器和操作名称来定义布局的主体元素

<body class="<%= controller_name %> <%= action_name %>">
  <%= yield %>
</body>
在这种情况下,一个小的条件可以防止在不应该触发的页面上触发特定于页面的行为

为了更清楚,请阅读

$(document).on("turbolinks:load", function() {
  if (!($(".foo.bar").length > 0)) {
    return;
  }
  //--- page specific js code after above condition ---
});