【问题标题】:Jquery click listener not firing on root path Rails/DeviseJquery单击侦听器未在根路径Rails / Devise上触发
【发布时间】:2015-02-16 16:09:59
【问题描述】:

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

根设置为welcome#index,控制器/功能为空白。如果未登录,主页默认为users/sign_in,但如果我单击任何其他不受设计“保护”的链接,侦听器将从这些页面工作。

有什么想法吗?

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);

【问题讨论】:

  • 当您点击着陆页上的按钮时,您的控制台会显示什么?
  • 它什么也没说。我在那个 Jquery 块中设置了一个断点,但是当您从 users/sign_in 中单击时它没有命中它。
  • 我很困惑。这里的行为似乎与 Rails 或 Devise 无关。我在这里模拟了一个关于 JSFiddle 的示例:jsfiddle.net/amullins/mLhzmkmb。表单按预期显示和隐藏,控制台指示每个点击事件。
  • 好的 - 当页面加载并且用户没有从users/sign_in 登录时,applicaiton.js 文件没有被调用。不知道为什么会这样,但是当我将相同的代码粘贴到控制台时它工作得很好。

标签: javascript jquery ruby-on-rails devise


【解决方案1】:

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

var ready;
ready = function() {

//some code 

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

...需要更改为:

变量准备好了; 准备好 = 函数() {

//some code 

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

虽然我仍然不完全清楚,但它看起来像是一个 turbolinks 并且 JS 文件没有加载到根路径的 page:load 上,但是当切换到 page:changethe “页面有已更改为新版本(并且在 DOMContentLoaded 上)”并且允许解析 javascript 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多