Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 jQuery使用Rails在主页上检测if_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript jQuery使用Rails在主页上检测if

Javascript jQuery使用Rails在主页上检测if,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,如何检测我当前是否在主页上? 例如,我只希望在登录页上执行此JS,即: app/views/pages/home.html.erb 有没有一种方法可以像root_path那样在rails中编写 以下是我的Javascript: var landingPage = root_path; // What should this variable here be? function updateNavStyle() { if(landingPage.length == 0 || location

如何检测我当前是否在主页上?
例如,我只希望在登录页上执行此JS,即:

app/views/pages/home.html.erb

有没有一种方法可以像root_path那样在rails中编写

以下是我的Javascript:

var landingPage = root_path; // What should this variable here be?

function updateNavStyle() {
  if(landingPage.length == 0 || location.href.toLowerCase().indexOf(landingPage.toLowerCase()) >= 0) {
    var offset = $('#change_color').offset();
    var scroll_start = $(document).scrollTop();
    if (scroll_start > offset.top) {
      // the white normal navbar
      $(".navbar-add").removeClass("navbar-trans");
      $(".navbar-link-text").removeClass("navbar-link-white");
    } else {
      // what the users sees when he lands on the page
      $(".navbar-add").addClass("navbar-trans");
      $(".navbar-link-text").addClass("navbar-link-white");
    }
  }
}

将此添加到您的页面底部

app/views/pages/home.html.erb

你可以看得更多

或者干脆把剧本放进去

app/views/pages/home.html.erb


当然,使用script标记
您的jquery代码

如果您使用javascript,您可以通过检查turbolinks:load事件来检查每个页面的加载,并检查由控制器和方法构造的rails自动生成的“类名”

下面是rails使用编辑方法加载post控制器的示例

$(document).on("turbolinks:load", function() {
  if ($(".posts.edit")[0] == true) {
    return something;
  }
});
这是咖啡脚本的样本

$(document).on "turbolinks:load", ->
  if $(".posts.edit")[0]
    # do something 

为什么不在登录页上只放置一个
updateNavStyle()
?这意味着该函数可以静态地存在于所有页面的资源中,但只有在登录页上才会被调用。因为我尝试过这样做,但它的工作方式与我单独编写此函数时的工作方式不同,所以我认为问题应该更多地围绕着找出为什么不起作用来展开。