Rails / Turbolinks - 导航到不同页面后颜色框不关闭
Rails / Turbolinks - Colorbox Not Closing After Navigating to Different Pages
我们正在使用 colorbox-rails gem 向我们的用户显示我们的 Rails 4 应用程序的注册页面。在弹出窗口的底部,我们有一个 link 表示 Already a member? Login
。登录文本将用户重定向到我们的登录页面。
但是,由于 Rails 4 使用 turbolinks,登录页面的 html 正在后台加载 AJAX。这具有在颜色框后面加载登录页面的效果,而颜色框仍保持打开状态。
这里是触发颜色框的html:
<%= link_to 'Sign Up', '/blank/sign_in_helper', class: 'nav-link-box',
:id => 'sign-up-link', :data => {
:colorbox => true}
%>
以及彩盒的HTML(sign_in_helper):
<h2>Sign Up</h2>
<%= form_for(:user, url: registration_path(:user)) do |f| %>
<div class="field">
<%= f.label :name, 'Display Name' %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<p>Already a member? <%= link_to 'Login.', new_user_session_path, class: 'lightbox-close' %> </p>
<% end %>
我尝试将颜色框关闭事件绑定到 link(coffeescript),但出于某种原因,它仅在 第二次单击 link 时有效:
$('.lightbox-close').click ->
$.colorbox.close()
有没有办法在仍然使用 turbo-links 的同时做到这一点?或者是为特定 link 禁用 turbo-links 的最佳方法?
谢谢!
如果您想为某个 link 禁用 turbolinks,请向其添加 data-no-turbolinks
属性
<%= link_to 'Login.', new_user_session_path, class: 'lightbox-close', data: {no_turbolinks: true} %>
当使用带有 javascript 绑定的 turbo links 时,最好执行您在 document.ready
到 page:load
上使用的代码,例如(假设您在你的 application.js
:
中使用 jquery)
var ready;
ready = function(event) {
//code when the page is loaded
};
$(document).on('ready page:load', ready);
我们正在使用 colorbox-rails gem 向我们的用户显示我们的 Rails 4 应用程序的注册页面。在弹出窗口的底部,我们有一个 link 表示 Already a member? Login
。登录文本将用户重定向到我们的登录页面。
但是,由于 Rails 4 使用 turbolinks,登录页面的 html 正在后台加载 AJAX。这具有在颜色框后面加载登录页面的效果,而颜色框仍保持打开状态。
这里是触发颜色框的html:
<%= link_to 'Sign Up', '/blank/sign_in_helper', class: 'nav-link-box',
:id => 'sign-up-link', :data => {
:colorbox => true}
%>
以及彩盒的HTML(sign_in_helper):
<h2>Sign Up</h2>
<%= form_for(:user, url: registration_path(:user)) do |f| %>
<div class="field">
<%= f.label :name, 'Display Name' %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<p>Already a member? <%= link_to 'Login.', new_user_session_path, class: 'lightbox-close' %> </p>
<% end %>
我尝试将颜色框关闭事件绑定到 link(coffeescript),但出于某种原因,它仅在 第二次单击 link 时有效:
$('.lightbox-close').click ->
$.colorbox.close()
有没有办法在仍然使用 turbo-links 的同时做到这一点?或者是为特定 link 禁用 turbo-links 的最佳方法?
谢谢!
如果您想为某个 link 禁用 turbolinks,请向其添加 data-no-turbolinks
属性
<%= link_to 'Login.', new_user_session_path, class: 'lightbox-close', data: {no_turbolinks: true} %>
当使用带有 javascript 绑定的 turbo links 时,最好执行您在 document.ready
到 page:load
上使用的代码,例如(假设您在你的 application.js
:
var ready;
ready = function(event) {
//code when the page is loaded
};
$(document).on('ready page:load', ready);