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 ...
随机推荐
- 170525、解决maven隐式依赖包版本问题
今天在使用dubbo2.5.3版本的时候,启动项目的时候发现一个问题,tomcat启动一直报错 Caused by: java.lang.IllegalStateException: Context ...
- 用angular中的ng-repeat和ng-show来实现tab选项卡
虽然我们可以用angular中的路由来做tab选项卡,但是那会让我们建立很多的页面来引入,或者建立 <script type="text/ng-template" id=&q ...
- poj1934 Trip【线性DP】【输出方案】
Trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3850 Accepted: 1030 Description ...
- php中 const 与define()的区别 ,选择
来自: http://stackoverflow.com/questions/2447791/define-vs-const 相同点: 两者都可以定义常量 const FOO = 'BAR'; def ...
- GraphicsMagick 号称图像处理领域的瑞士军刀
标签: librarydelegatesimage图像处理fontstiff 2012-09-13 10:15 2496人阅读 评论(0) 收藏 举报 分类: java技术(52) 简介 ...
- Qt:QPushButton 单击、双击响应区分
开发环境:win10+vs2015+qt5.9.1 背景:QPushButton的双击事件虽然一直有,但是在双击完成之前,总会响应到单击的事件处理或者连接槽,使用很不方便.自己子类化了一个QPushB ...
- find the safest road---hdu1596(最短路模板求最大概率)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1596 求给定的任意两点之间的最大安全概率,概率之间是相乘的关系,所以注意初始化即可 #include& ...
- JS&CSS压缩工具YUICompressor
YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发. YUI Compressor下载地址:http://www.jb51.net/softs/25860.h ...
- [Axiom 3D]3.SceneManager场景管理器
首先看看Axiom.Core命名空间下public abstract class SceneManager : DisposableObject A SceneManager organizes th ...
- Flume+Morphlines实现数据的实时ETL
转载:http://mp.weixin.qq.com/s/xCSdkQo1XMQwU91lch29Uw Apache Flume介绍: Apache Flume是一个Apache的开源项目,是一个分布 ...