编程语言
首页 > 编程语言> > javascript – Twitter Bootstrap Modal没有弹出用户登录

javascript – Twitter Bootstrap Modal没有弹出用户登录

作者:互联网

当用户登陆我们的主页时,我无法将twitter bootstrap pop-over模式与设计登录/注册结合使用.我花了一些时间实现不同的方法,但仍然没有成功.截至目前,当我点击与模态相关联的“登录”按钮时,网站刷新但没有模态.

apps / views / layout / _header.html.slim(我的application.erb文件调用其他部分)

li
  = link_to "Login", "data-toggle" => "modal", "data-target" => "#login_modal", :class => "btn btn-small"

li
  = link_to "Sign Up Free", "data-toggle" => "modal", "data-target" => "#sign_up_modal", :class => "btn btn-small"

我有两个部分(sign_up_modal,login_modal)几乎相同…

<div class="modal hide fade in" id="sign_up">
<div class="modal-header">
    <button class="close" data-dismiss="modal">x</button>
    <h2>Sign Up</h2>
</div>
    <div class="modal-body">
        <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
        <%= devise_error_messages! %>
    <div><%= f.label :email %><br />
        <%= f.email_field :email, :autofocus => true %></div>
    <div>
        <%= f.label :password %><br />
        <%= f.password_field :password %>
    </div>
    <div>
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation %>
    </div>
    </div>
    <div class="modal-footer">
        <p>
            <div>
                <%= f.submit "Sign up", :class => 'btn btn-small btn-success' %>
            </div>
        </p>
        <p>
            <a href="#" class="btn btn-small" data-dismiss="modal">Close</a>
        </p>
</div>
<% end %>
</div>

在我的application.coffee中,我确保需要twitter / bootstrap

#= require twitter/bootstrap

我已经确保将gem添加到我的gemfile中

gem "twitter-bootstrap-rails"

当我点击“注册”或“登录”页面时只刷新..我相信我已经添加了所有代码,对不起新的堆栈溢出!

应用/控制器/ sessions_controller.rb

class SessionsController < ApplicationController

def new

end

def create
  user = User.from_omniauth(env["omniauth.auth"])
  session[:user_id] = user.id
  redirect_to root_path
end

def destroy
 session[:user_id] = nil
 redirect_to root_path
end

end

解决方法:

在应该触发模态的按钮上执行此操作

<%= link_to "login", new_user_session_path, :remote => true, 'data-toggle' => 'modal', 'data-target' => '#your_modal_id', :class => "btn btn-primary", :method: 'get' %>

为此,您必须覆盖设计会话#new和registrations #new以响应ajax请求.你可以通过在这两个动作上引入一个respond_to块来做到这一点

respond_to do |format|
  format.js
end

然后在你的app / views / devise / registrations和app / views / devise / sessions中创建new.js.erb文件.您可以从模态中删除登录和注册表单,并将javascript用于渲染这些new.js.erb文件中的模式内的表单.

您可以从模态中删除表单,并在模式体中删除加载的gif.您可以将表单放在部分中,并将其放在app / views / devise / sessions / _login_form.html.erb中.然后在app / views / devise / sessions / new.js.erb中你做这样的事情.

$('#your_modal_id').remove-data
$('.modal-header').html ("<%= escape_javascript(render'/path/to/partial/with/header/content') %>");
$('.modal-body').html ("<%= escape_javascript(render '/path/to/partial')) %>");
$('.modal-footer').html ("<%= escape_javascript(render '/path/to/partial')) %>");

标签:javascript,ruby-on-rails,twitter-bootstrap,devise,modal-dialog
来源: https://codeday.me/bug/20190929/1833216.html