Jquery 点击侦听器未在根路径上触发 Rails/Devise

Jquery click listener not firing on root path Rails/Devise

您好,我有一个简单的 jquery 点击侦听器,它插入一个登录框,该登录框适用于除登录页面之外的所有页面。我们正在使用 devise 进行身份验证,我已经尝试将主页重定向到不同的路径,但我猜测 devise 魔法正在阻止这种情况的发生。

根设为welcome#index,controller/function为空。如果未登录,主页默认为 users/sign_in,但如果我点击任何其他 link 而不是 "guarded",监听器将在这些页面上工作。

有什么想法吗?

HTML

 <div class="dropdown-signin">
       <div class="dropdown-signin-carrot">
      </div>
        <%= form_for(:user, :url => session_path(:user)) do |f| %>
          <%= f.text_field :email, autofocus: true, placeholder: "Email" %>
          <br>
          <%= f.password_field :password, autocomplete: "off", placeholder: "Password"%>
          <div class="checkbox">
          <%= f.check_box :remember_me %>
          <%= f.label :remember_me %>
          </div>
         <div> <%= f.submit 'Sign in', :class => 'btn btn-lg btn-primary' %></div>

          <%= link_to "Forgot your password?", new_password_path(:user) %>
        <% end %>
  </div>

JS

var ready;
ready = function() {

  $("#login").click(function(){
    $(".dropdown-signin").toggleClass("open")
         });  


};

$(document).ready(ready);
$(document).on('page:load', ready);

好的 - 问题出在 javascript 文件中:

var ready;
ready = function() {

//some code 

$(document).on('page:load', ready);

...需要更改为:

变量准备就绪; 准备好=功能(){

//some code 

$(document).on('page:change', ready);

虽然我还不是很清楚,它看起来像是一个 turbolinks 并且那个 JS 文件没有加载到根路径的 page:load 上,但是当切换到 page:change "page has been changed to the new version (and on DOMContentLoaded)" 并且允许解析 javascript 文件。