问题描述
当用户登陆我们的主页时,我无法将 twitter 引导弹出模式与设计登录/注册结合起来.我花了一些时间实施不同的方法,但仍然没有成功.截至目前,当我点击与模式关联的登录"按钮时,网站刷新但没有模式.
apps/views/layout/_header.html.slim(我的 application.erb 文件在其他部分调用)
li= link_to "登录", "数据切换" =>模态",数据目标"=>"#login_modal", :class =>btn btn-小"李= link_to "免费注册", "data-toggle" =>模态",数据目标"=>"#sign_up_modal", :class =>btn btn-小"我有两个几乎相同的部分(sign_up_modal、login_modal)...
<div class="modal 隐藏淡入" id="sign_up"><div class="modal-header"><button class="close" data-dismiss="modal">x</button><h2>注册</h2></div><div class="modal-body"><%= form_for(resource, :as => resource_name, :url =>registration_path(resource_name)) 做 |f|%><%= devise_error_messages!%><div><%= f.label :email %><br/><%= f.email_field :email, :autofocus =>true %></div><%= f.label :password %><br/><%= f.password_field :password %></div><%= f.label :password_confirmation %><br/><%= f.password_field :password_confirmation %></div></div><div class="模态页脚"><p><%= f.submit "注册", :class =>'btn btn-small btn-成功' %></div></p><p><a href="#" class="btn btn-small" data-dismiss="modal">关闭</a></p></div><%结束%></div>在我的 application.coffee 中,我确保需要 twitter/bootstrap
#= 需要 twitter/bootstrap
我已经确保将 gem 添加到我的 gemfile 中
gem "twitter-bootstrap-rails"
当我点击注册"或登录"时,页面会刷新.我相信我已经添加了所有代码,抱歉堆栈溢出!
apps/controllers/sessions_controller.rb
类 SessionsController <应用控制器定义新结尾定义创建用户 = User.from_omniauth(env["omniauth.auth"])session[:user_id] = user.id重定向到根路径结尾定义破坏会话[:user_id] = nil重定向到根路径结尾结尾
解决方案 在应该触发模态的按钮上执行此操作
<%= link_to "login", new_user_session_path, :remote =>真,数据切换"=>'模态','数据目标' =>'#your_modal_id', :class =>"btn btn-primary", :method: 'get' %>
为此,您必须覆盖设计 sessions #new 和 registrations #new 以响应 ajax 请求.你可以通过在这两个动作上引入一个 respond_to 块来做到这一点
respond_to do |格式|格式.js结尾
然后在您的 app/views/devise/registrations 和 app/views/devise/sessions 中创建 new.js.erb 文件.您可以从模式中删除登录和注册表单,然后将 javascript 用于在这些 new.js.erb 文件中的模式中呈现表单.
您可以从模式中删除表单,并在 modal-body 中放置一个加载 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')) %>");
I'm having trouble incorporating a twitter bootstrap pop-over modal with devise login/signup for when a user lands on our home page. I've spent some time implementing different methods but still no success. As of right now, when I click on the "login" button that is associated with the modal, the site refreshes but there is no modal.
apps/views/layout/_header.html.slim (my application.erb file calls in other partials)
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"
I have two partials (sign_up_modal, login_modal) that are almost identical...
<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>
In my application.coffee I've made sure to require twitter/bootstrap
#= require twitter/bootstrap
And I've made sure to add the gem to my gemfile
gem "twitter-bootstrap-rails"
When I click on either "sign up" or "login" the page just refreshes..I believe I've added all my code, sorry new to stack overflow!
apps/controllers/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
解决方案 Do this on the button that is supposed to trigger the modal
<%= link_to "login", new_user_session_path, :remote => true, 'data-toggle' => 'modal', 'data-target' => '#your_modal_id', :class => "btn btn-primary", :method: 'get' %>
For this to work you will have to overwrite devise sessions #new and registrations #new to respond to ajax requests. you can do this by introducing a respond_to block on both of these actions like this
respond_to do |format|
format.js
end
then in your app/views/devise/registrations and app/views/devise/sessions create new.js.erb files. You can remove the login and sign-up forms from the modal and put the javascript to render the forms inside the modals in these new.js.erb files.
You can remove the form from the modal and in modal-body you put a loading gif. You can instead put the form in a partial and place it in app/views/devise/sessions/_login_form.html.erb. Then in app/views/devise/sessions/new.js.erb you do something like this.
$('#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')) %>");
这篇关于Twitter Bootstrap Modal没有弹出用户登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End
相关推荐
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22
前端开发问题
182
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18
前端开发问题
301
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17
前端开发问题
437
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11
前端开发问题
455
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20
前端开发问题
5
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20
前端开发问题
13
热门文章
1错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require()
2vue中yarn install报错:info There appears to be trouble with you
3为什么 Chrome(在 Electron 内部)会突然重定向到 chrome-error://chromewebdat
4“aria-hidden 元素不包含可聚焦元素"显示模态时的问题
5使用选择器在 CSS 中选择元素的前一个兄弟
6js报错:Uncaught SyntaxError: Unexpected string
7layui怎么刷新当前页面?
8将模式设置为“no-cors"时使用 fetch 访问 API 时出错
热门精品源码
最新VIP资源
1多功能实用站长工具箱html功能模板
2多风格简历在线生成程序网页模板
3论文相似度查询系统源码
4响应式旅游景点宣传推广页面模板
5在线起名宣传推广网站源码
6酷黑微信小程序网站开发宣传页模板
7房产销售交易中介网站模板
8小学作业自动生成程序


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)