Learn Rails5.2- Scaffolding and REST,flash.now, flash.keep; Access via JSON
用generator建立一个手脚架
Representational
State Transfer (REST). 具像的状态转存。
https://en.wikipedia.org/wiki/Representational_state_transfer
RESTful风格的简单的理解:
如何根据一个简单的法则来存取数据。法则包括CRUD的原理和对HTTP的明确定义。
redirect_to
logger.info "+++ Example +++" :可以添加log,同时在terminal上显示。
redirect_to :back :回到刚才的页面。
Flash Messages
在Rails, Flash Messages就是在redirect后,显示在新的网页上的提示。redirect_to和它一起使用。redirect_to(options = {}, response_status_and_flash = {})
ActionDispatch::Flash < Object
这个模块又包含2个模块:
1. RequestMethods, flash()和flash=(flash), reset_session()3个方法。
2. FlashHash, 这个模块包含了大量对flash对象的实例方法
[](k), []=(k, v), 和由此演化出的alert(), notice(), 如此便可以使用flash[:alert]
⚠️ 除了alert,notice,可以使用任意的key,原理是[],[]=。但是和redirect_to在一行使用的话,只能使用alert或notice
each(&block) , empty?
keep(k = nil)
一般情况,在一个action中新增的flash,会用在下一个request行为,然后删除。如果希望这个flash保留起来,在下下个request中还能使用。则使用keep方法。
如flash.keep会保留整个flash给下一个request。也可以指定flash.keep(:notice)
案例:从某个request行为redirect到index.html.erb页面的flash不会消失,它还会在users_url中使用一次。
now()
flash.now[:message] = "Hello current action"。 当你需要传递一个flash对象给当前的action时,使用now方法,你的对象会在当前action完成后消失。
默认,新增values给flash会让它们在下一个request中使用。但是有时候想要使用它们在同一个request中。比如当create行为失败了,你会直接render新的模版,这不会发出新的请求,但你仍然想要显示一个flash信息。此时,你可以使用flash.now方法。
在视图页面可以这么写:
Scaffold的摘录
Access via JSON
默认,Rails's的生成器不仅仅为了人类用户通过HTML进行存取操作,也为机器准备了一个直接的接口。相同的action可以通过这个接口调用。
https://zh.wikipedia.org/wiki/JSON
JavaScript Object Notation or JSON
轻量级数据交换语言,用来传输由属性值或者序列性的值组成的数据对象。它脱胎于JavaScript。JSON官方类型是 application/json, 扩展名.json
gem "jbuilder" 。
JSON As Default
index.json.jbuilder
json.array! @products, partial: "products/product", as: :product
解释:渲染了partial _product.json.jbuilder
json.extract! product, :id, :name, :price, :created_at, :updated_at
json.url product_url(product, format: :json)
在浏览器里输入http://localhost:3000/products.json
JSON and XML Togethe
手脚架没有生产index动作的JSON格式。
什么时候使用Scaffolding?
任何时候都不要使用手脚架,Rails developer都是手动建立每件东西。
不过在快速开始一个新project的时候还有用,仅仅是在开始。
也可以新建一个scaffold然后删除不需要的部分。
rm app/views/products/*.jbuilder.json
把router.rb中的resources :products加上only:[:index]的限制。
controller 中删除没有用的action。
在index.html.erb,show.html.erb中删除无用的link_to
Learn Rails5.2- Scaffolding and REST,flash.now, flash.keep; Access via JSON的更多相关文章
- 网页中插入FLASH(swf文件),并且让Flash不遮挡HTML元素
一:网页中插入flash代码如下: 当然里面的很多属性可以去掉,根据具体的需求而定. 我们在网页中经常遇到播放flash,要正常播放flash就要用到OBJECT和EMBED这两个标签.鉴于火狐及 ...
- nand flash,nor flash,spi flash,片上RAM,片外RAM
Flash有掉电数据保存的特点,RAM掉电则数据丢失,但是RAM的速度更高,擦写次数理论上没有限制,而Flash则不行. Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快, ...
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
转载请说明原出处,谢谢~~ 昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了 防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背 ...
- 支持IE,FireFox,Chrome三大主流浏览器,通过js+Flash方式将table导出Excel文件
今天在做项目的时候,遇到了前端下载Excel的功能,结果原先的代码,如下: function generate_excel(tableid) { var table = document ...
- 提示“此Flash Player与您的地区不相容,请重新安装Flash”的解决办法
问题原因: 因为Flash相对于HTML5,有着运算效率低.资源占用大.安全性不高等缺点,随着HTML5越来越普及,Adobe已宣布2020年正式停止支持Flash这项技术. 但Adobe公司为了利益 ...
- RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH
在看上面2440的内存映射的时候,对其中的有些名字,不是完全太懂,所以到网上找了相关的信息. 对于mini2440来说,SDRAM,即内存,程序运行时的地方.选择连接SDRAM的为bank6. 1)S ...
- ARM的两种启动方式 (NAND FLASH. NOR FLASH)
为什么会有两种启动方式? 这就是有两种FLASH 的不同特点决定的. NAND FLASH 容量大,存储的单位比特数据的成本要低很多,但是要按照特定的时序对NAND FLASH 进行读写,因此CP ...
- Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
转自zrong's blog:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的 ...
- java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish
编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...
随机推荐
- html5新属性contenteditable 对于那些不可编辑的标签,现在都可以编辑了
contenteditable = true 表示该html标签的内容可以编辑,对于那些不可编辑的标签,现在都可以编辑了.
- Flum入门必备知识
1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个顶级项目. flum ...
- SaltStack配置管理-状态间关系
上一篇:SaltStack配置管理-LAMP状态设计 include包含 上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装 lamp.sls include: - apache ...
- poj3974 Palindrome【回文】【Hash】【二分】
Palindrome Time Limit: 15000MS Memory Limit: 65536K Total Submissions: 13157 Accepted: 5028 Desc ...
- Python+ Calibre 处理 中文报纸
import re ##2 line='<a href=nw.D110000renmrb_20180401_1-01.htm><script>document.write(vi ...
- vs 2015
基于应用要求和要使用的语言选择所需工具. Xamarin for Visual Studio:针对所有设备的 C# 中的常用基本代码 Apache Cordova with Visual Studio ...
- GraphicsMagick 号称图像处理领域的瑞士军刀
标签: librarydelegatesimage图像处理fontstiff 2012-09-13 10:15 2496人阅读 评论(0) 收藏 举报 分类: java技术(52) 简介 ...
- Spring boot maven 搭建框架
Spring Boot:目的:这个框架帮助开发者更容易地创建基于Spring的应用程序和服务,使得pring开发者能够最快速地获得所需要的Spring功能.优点:完全不需要XML配置,让spring应 ...
- modelform动态显示select标签的对象范围
既根据当前登录人,动态显示对象相关的的select的选项,例如 A登录,只显示A的客户,B登录,只显示B自己的客户 先了解form的ModelChoiceField字段(这个表格没意义,就是引出参数q ...
- 详谈LABJS按需动态加载js文件
为了提高页面的打开和加载速度,我们经常把JS文件放在页面的尾部,但是有些JS必须放在页面前面,这样就会增加页面的加载时间:于是出现了按需动态加载的概念,这个概念就是当页面需要用到这个JS文件或者CSS ...