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 ...
随机推荐
- Systemd unit generators unit
systemd.generator(7) - Linux manual page http://man7.org/linux/man-pages/man7/systemd.generator.7.ht ...
- python基础-第九篇-9.3线程池
简单版 import queue import threading class ThreadPool(object): def __init__(self, max_num=20): self.que ...
- python 定义类 学习1
此时的d1就是类Dog的实例化对象 实例化,其实就是以Dog类为模版,在内存里开辟一块空间,存上数据,赋值成一个变量名 # 定义类模板 class dog(object): # 定义类的方法功能 # ...
- iptables 执行清除命令 iptables -F 要非常小心的
iptables 执行清除命令 iptables -F 要非常小心的 http://blog.csdn.net/netingcn/article/details/5692972 使用 /sbin/ip ...
- HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)
http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find way ...
- scRNA-seq测序的两种技术[转载]
转自:http://www.ebiotrade.com/newsf/2017-9/201795172237350.htm 1.综述 哈佛大学的两个团队将微流体技术引入单细胞RNA-Seq方法中,分别开 ...
- Jenkins时区设置
系统管理->脚本命令行 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
- java多线程(四)
使用synchronized锁实现线程同步 为什么要用线程同步 我们先来看下这段代码的运行结果: Java学习交流群:495273252 在多线程上篇博客已经介绍过了,JVM采用的是抢占式调度模型,当 ...
- Java用数据结构解决实现问题之数学问题
有趣的整数: 完数:如果一个数字恰好等于他的因子之和,就叫做完数,需求是求出10000以内的所有的完数. 解法:1.用n去除以1-n之间的所有的整数,将能整除的被除数保存到一个数组中,作为n的一个因子 ...
- FCKeditor配置与使用
fckeditor - (1)资料介绍与安装 fckeditor介绍 FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器. 1.fckeditor官网:http://ww ...