美文网首页ruby on rails
rails如何在index页面不刷新的情况下完成create

rails如何在index页面不刷新的情况下完成create

作者: 33d8e4ec2cc9 | 来源:发表于2015-08-30 13:32 被阅读440次

现在,一个页面的精致与否,用户的体验舒服不舒服,绝大部分就体现在页面是否能像打开本地文件一样做到尽量少的加载整个页面,ajax的局部刷新可以帮助我们实现。今天主要讲一下,如何在页面还没刷新就让用户可以看到他刚刚新添的数据。

涉及到的文件有如下

index.html.haml      _form.html.haml     xxx.controller.rb以及最重要的create.js.coffee

首先是做到不打开新的页面完成创建数据,那么我们需要的效果是当我们点击新建的时候,出现一个弹窗,来让我们创建数据,index页面一般都有“新建”这个按钮,他本来一般是这样子的

link_to "新建", new_xxx_path  那么我们首先肯定是不用这个链接了,因为打开这个链接我们就会跳转到新页面,那这个按钮先改成 link_to "新建", "#", {class: btn-new}, 顺便给个class或者id以便我们等会能选到,这时候我们需要在准备一个空的div,用来加载我们的表单在你页面的底下加一个#new_XXX_dialog_div{align: "center"}名字什么无所谓,之所以叫dialog,是因为我们马上就要用到jquery ui 的dialog这个方法,这个方法的作用就是让你在一个弹窗里打开一个链接,这个方法这么写

$(".btn-new").click ->

url = '/xxx/new'

$("#new_xxx_dialog_div").load(url).dialog(title: '新建', width: 700, height: 450)

return false

如此一来当我们点击新建的时候会有这样一个效果

需要注意的是把你new方法的layout开关关了,render layout: nil

那光是这样还是不够,因为我们点击保存之后页面还是会重定向到index,从而导致刷新,那怎么解决呢,我们不用他本来的表单提交,打开你的表单页面在你的表单里加一条属性,

remote: true 用了这个之后就可以让你的create这个动作不必在定向到index,我们可以渲染一个js文件

我们现在要做的事情大体上是这个意思:用户点击保存之后,找到create这个动作,在save之后他本来会回到index,刷新了页面之后就能看到新加的数据了,现在不让这个动作回到index,那页面就不会刷新,可是如此一来用户也没法看到他刚刚加的数据,虽然数据已经存在了,那么重点来了,create.js.coffee这个文件里我们要写些什么才能让用户感觉页面没刷但是数据已经添好了呢,大体上为三个步骤

1.把弹窗关闭

2.在原本显示数据的地方插入一条html,内容就是你新建的数据,这条数据你可以说它是假的,但其实也是真的,因为数据的确在,但光是这样还不够以假乱真,因为如果你想查看,编辑,或者删除这条数据,那是做不到的,那这时候就需要第三步

3为这条加进来的数据绑定事件

第一步很简单 $("#new_xxx_dialog_div").dialog('close')

第二步 取决于你的内容,一般用after()方法或者html(),在你想要添进去的地方利用控制器里的变量使其‘混’在其他数据里面也看不出来

看到第一条数据了吗,是不是看不出来,不过这时候点那个删除就会暴露

第三步 我们用bind方法为这个删除按钮绑定事件,从而使这条‘假’数据能以假乱真

class最好有别于index页面的,不然会发生一个按钮触发两次事件的尴尬情况,这时候再点击删除,他也能像正常的数据一样可以被删除了。

相关文章

  • rails如何在index页面不刷新的情况下完成create

    现在,一个页面的精致与否,用户的体验舒服不舒服,绝大部分就体现在页面是否能像打开本地文件一样做到尽量少的加载整个页...

  • (新手)thinkkphp3.2+AJAX异步搜索加载即页面不刷

    异步加载/搜索指的是在不刷新页面的情况下,更换显示,比较明显的是,如淘宝点击搜索后,页面没有刷新,但是列表却更新了...

  • 学习SQL的第八天(11月8日)

    SQL CREATE INDEX 语句 CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,...

  • 【Vue】Vue实现无痕刷新

    一、什么是无痕刷新 在不刷新浏览器的情况下,实现页面的刷新。传统的刷新页面方式window.location.re...

  • JAVA 导出或下载页面无刷新

    一、需求: 在不使用ajax的情况下,如何在页面点击"导出"或者"下载"按钮时候页面无刷新? 例如列表导出exce...

  • 2018-08-26

    页面重复刷新,闪过进度条,console被清空,a标签链接没写,固定情况下会刷新本页面,导致请求无法完成(rese...

  • 【oracle】建立索引常用方法笔记整理

    1.创建索引 create index on ( ) [tablespace ];如:简单索引:create...

  • AJAX

    概述 在不刷新页面的情况下更新页面的数据。(布局更新) 应用场景: 实现页面上拉加载更多数据 列表数据无刷新分页 ...

  • popup关键代码

    目的:点击按钮弹出新窗口,新窗口中的动作执行完毕后,原页面不刷新数据返回。 index.html主页面,点击按钮时...

  • javascript中window.open()与window.

    window.open("index.aspx",'top');只是表示打开这个页面,并不是打开并刷新index....

网友评论

    本文标题:rails如何在index页面不刷新的情况下完成create

    本文链接:https://www.haomeiwen.com/subject/sdnkcttx.html