bootstrap切换tab页局部刷新_Rails 用 RJS 简单有效的实现页面局部刷新

我们时常在做项目的时候会遇到这样的需求,页面上有个基本数据的下拉框,用于选择一些数据,如:项目版本号、联系人、收件地址、银行账号列表什么的。

而需求可能会要求说可以在这个页面随时增加那些下拉框的选择值,而不是另开窗口。

于是我们可能需要实现一个浮动窗口,里面包含新增表单,实现表单 AJAX 提交,最后在刷新主窗口的下拉菜单控件。

这里介绍一下我最近实现的一个简单方式:

主表单页面:

用 link_to + remote 的方式实现一个 Ajax 请求的点击

AddressesController 保持标准的 Rails new 函数结构

class AddressesController < ApplicationController

def new

@address = Address.new

end

def create

@address = Address.new(address_params)

respond_to do |format|

if @address.save

format.html { redirect_to addresses_path, notice:'地址新增成功。' }

format.js

else

format.html { render :new }

format.js

end

end

end

end

新增 new.js.erb (以后会大量用 js.erb 的做法),由于前面是 remote 请求,HTTP Header 里面带的信息会让 Rails 渲染 js.erb 的模板

这里渲染 _form.html.erb 生成地址表单的 HTML:

var html = "";

// bootbox 弹窗插件 http://bootboxjs.com/

bootbox.dialog({

title: "新增联系地址",

message: html

});

然后我们就得到了这样的界面:

然后正题来了,我们怎样才能在地址新增成功以后,以无刷新的方式更新主表单上面那个下拉框呢?

这就是本帖要将的技巧,非常简单,而且适用于任何地方!

我们新增一个 create.js.erb,前面说过 remote 的请求,Rails 会选择 js.erb 的模板来渲染

// 用 Ajax 载入当前页面,找到下拉框的 Dom 的新 HTML,再替换目前页面的下拉框 Dom

var selector = '.form-field-user-address';

$.get(location.href, function(html) {

var doc = $(html).find(selector);

$(selector).replaceWith(doc);

});

bootbox.hideAll();

var html = "";

// 保存失败,直接替换浮动窗口上面的 HTML 为新的 form render 结果

// 因为 @address 包含验证错误信息,所以 render 出来的 HTML 也包含验证信息

$('form.new_address').replaceWith(html);

为了很多地方都能用到,于是我把上面的变成一个公共函数:

app.coffee

window.App =

refreshDom: (selector) ->

$.get location.href, (html) ->

doc = $(html).find(selector)

$(selector).replaceWith(doc)

create.js.erb 就可以简化了:

App.refreshDom('.form-field-user-address');

bootbox.hideAll();

var html = "";

$('form.new_address').replaceWith(html);

扩充阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Bootstrap 实现 Tab 标签切换显示非常简单,只需要使用 BootstrapTab 插件和一些基本的 HTML 和 CSS 代码即可。以下是一个基本的示例: HTML 代码: ``` <ul class="nav nav-tabs"> <li class="active"><a href="#tab1" data-toggle="tab">Tab 1</a></li> <li><a href="#tab2" data-toggle="tab">Tab 2</a></li> <li><a href="#tab3" data-toggle="tab">Tab 3</a></li> </ul> <div class="tab-content"> <div class="tab-pane active" id="tab1"> <p>这是 Tab 1 中的内容。</p> </div> <div class="tab-pane" id="tab2"> <p>这是 Tab 2 中的内容。</p> </div> <div class="tab-pane" id="tab3"> <p>这是 Tab 3 中的内容。</p> </div> </div> ``` 在这个示例中,我们使用了 Bootstrap 的 nav 和 tab 样式来创建了一个 Tab 标签。每个 Tab 都是一个链接,点击链接可以切换到对应的标签。我们使用了 data-toggle 属性来告诉 Bootstrap 使用 Tab 插件来处理这些链接。每个标签都是一个 div 元素,使用了 tab-pane 样式。其中,第一个标签使用了 active 样式来标记为默认显示的标签。 CSS 代码: ``` .nav-tabs { margin-bottom: 15px; } .tab-content { padding: 15px; border: 1px solid #ddd; border-top: none; } ``` 在这个示例中,我们使用了一些基本的 CSS 样式来调整 Tab 标签的外观。我们设置了一个 margin-bottom 样式来增加 Tab 标签和其他元素之间的间距,以及一个 padding 和 border 样式来设置标签的边框和内边距。 JavaScript 代码: ``` $(function() { $('.nav-tabs a').click(function() { $(this).tab('show'); }); }); ``` 在这个示例中,我们使用了 jQuery 库来管理 Tab 插件。当用户点击 Tab 标签中的链接时,我们使用 tab('show') 方法来显示对应的标签。 总之,使用 Bootstrap 实现 Tab 标签切换显示非常简单,只需要使用一些基本的 HTML、CSS 和 JavaScript 代码即可。通过使用 Tab 插件,我们可以轻松创建漂亮且易于使用的 Tab 标签,为用户提供更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值