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 文件。
您好,我有一个简单的 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 文件。