触发模式而不是重定向到/ users / sign_in路径,Rails 4与设计

时间:2014-12-31 11:49:45

标签: jquery ruby-on-rails twitter-bootstrap devise

我搜索了类似的问题,但没有找到。我所能找到的就是在点击某个特定链接时如何显示登录表单。

我想使用before_action :authenticate_user!此时,当我尝试访问需要身份验证的广告展示操作时,它会重定向到/users/sign_in路径。相反,我想在同一个窗口中显示模态,用户可以输入他的信用。

到目前为止,我刚为登录表单准备了Bootstrap模式。

<div class="modal fade" id="loginmodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="myModalLabel">Login</h4>
      </div>
      <div class="modal-body">



      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Aizvērt</button>

      </div>
    </div>
  </div>
</div>

和Application_helper,允许在任何视图中显示登录表单。

module ApplicationHelper
     def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end
end

这甚至可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以完全删除authenticate_user before_action,然后在layouts / application.html.erb中执行类似的操作(在该文件中也包含您的模态代码):

<% if !user_signed_in? %>
  $('#loginmodal').modal();
<% end %>

在视图方面有更简洁的方法,但这应该让你开始。