Rails / Turbolinks - 导航到不同页面后Colorbox未关闭

时间:2015-10-26 04:23:41

标签: ruby-on-rails ajax ruby-on-rails-4 colorbox turbolinks

我们正在使用colorbox-rails gem向我们的用户显示Rails 4应用程序的注册页面。在弹出窗口的底部,我们有一个指向Already a member? Login的链接。登录文本将用户重定向到我们的登录页面。

但是,由于Rails 4正在使用turbolinks,因此Login页面的html将在后台加载AJAX。这具有加载颜色框后面的登录页面的效果,而颜色框仍然保持打开状态。

以下是触发colorbox的html:

<%= link_to 'Sign Up', '/blank/sign_in_helper', class: 'nav-link-box',
                                          :id => 'sign-up-link', :data => {
                                          :colorbox => true}
                                           %>

colorbox的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 %>

我已经尝试将colorbox close事件绑定到链接(coffeescript),但由于某种原因,它仅在第二次点击链接时起作用

$('.lightbox-close').click ->
    $.colorbox.close()

在使用turbo-links时有没有办法做到这一点?或者是禁用特定链接的turbo链接的最佳方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您要为特定链接禁用turbolink,请为其添加data-no-turbolinks属性

<%= link_to 'Login.', new_user_session_path, class: 'lightbox-close', data: {no_turbolinks: true} %>

当使用带有javascript绑定的turbo链接时,最好执行document.readypage:load上常用的代码,例如(假设您使用的是jquery){{1} }:

application.js