用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中使用一次。

  def index
    flash.keep
    redirect_to users_url
  end

now()

flash.now[:message] = "Hello current action"。 当你需要传递一个flash对象给当前的action时,使用now方法,你的对象会在当前action完成后消失。

默认,新增values给flash会让它们在下一个request中使用。但是有时候想要使用它们在同一个request中。比如当create行为失败了,你会直接render新的模版,这不会发出新的请求,但你仍然想要显示一个flash信息。此时,你可以使用flash.now方法。

  def create
    @client = Client.new(params[:client])
    if @client.save
      # ...
    else
      flash.now[:error] = "Could not save client"
      render action: "new"
    end
  end

在视图页面可以这么写:

    <% flash.each do |name, message| %>
      <p><i><%= "#{name}: #{message}" %></i></p>
    <% end %>

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格式。

  def index
    @products = Product.all
    respond_to do |format|
      format.html
      format.json {render json: @projects}
      format.xml {render xml: @products}
    end
  end

什么时候使用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的更多相关文章

  1. 网页中插入FLASH(swf文件),并且让Flash不遮挡HTML元素

    一:网页中插入flash代码如下:  当然里面的很多属性可以去掉,根据具体的需求而定.  我们在网页中经常遇到播放flash,要正常播放flash就要用到OBJECT和EMBED这两个标签.鉴于火狐及 ...

  2. nand flash,nor flash,spi flash,片上RAM,片外RAM

    Flash有掉电数据保存的特点,RAM掉电则数据丢失,但是RAM的速度更高,擦写次数理论上没有限制,而Flash则不行. Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快, ...

  3. duilib修复ActiveXUI控件bug,以支持flash透明动态背景

    转载请说明原出处,谢谢~~ 昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了 防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背 ...

  4. 支持IE,FireFox,Chrome三大主流浏览器,通过js+Flash方式将table导出Excel文件

    今天在做项目的时候,遇到了前端下载Excel的功能,结果原先的代码,如下: function generate_excel(tableid) {        var table = document ...

  5. 提示“此Flash Player与您的地区不相容,请重新安装Flash”的解决办法

    问题原因: 因为Flash相对于HTML5,有着运算效率低.资源占用大.安全性不高等缺点,随着HTML5越来越普及,Adobe已宣布2020年正式停止支持Flash这项技术. 但Adobe公司为了利益 ...

  6. RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH

    在看上面2440的内存映射的时候,对其中的有些名字,不是完全太懂,所以到网上找了相关的信息. 对于mini2440来说,SDRAM,即内存,程序运行时的地方.选择连接SDRAM的为bank6. 1)S ...

  7. ARM的两种启动方式 (NAND FLASH. NOR FLASH)

    为什么会有两种启动方式? 这就是有两种FLASH 的不同特点决定的. NAND FLASH 容量大,存储的单位比特数据的成本要低很多,但是要按照特定的时序对NAND  FLASH  进行读写,因此CP ...

  8. 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编写的 ...

  9. java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

    编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...

随机推荐

  1. ZOJ 3469Food Delivery(区间DP)

    Food Delivery Time Limit: 2 Seconds      Memory Limit: 65536 KB When we are focusing on solving prob ...

  2. Process Monitor分析某个应用行为

    1.打开Process Mointor 2.点击filter-->filter   在弹出的对话框中Architecture 下拉框,选择Process Name 填写要分析的应用程序名字. 点 ...

  3. PGA结构

    当客户端向服务器发送连接请求,服务器监听到客户端的请求,在专用服务器模式下,会在服务器端衍生一个server process来代理客户的请求,server process进而向实例发起连接,创建会话, ...

  4. Python开发【模块】:Requests(一)

    Requests模块 1.模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urlli ...

  5. Openstack(十)部署nova服务(计算节点)

    在计算节点安装 10.1安装nova计算服务 # 阿里云源详见2.3配置 # yum install openstack-nova-compute 10.2配置nova计算服务 10.2.1配置nov ...

  6. [py]django重置密码

    django的admin用户被我多动症一样的测试,给密码弄丢了,需要重置. 从数据库重置的可能性为0,因为django对于密码有保护策略.考虑从运行程序的地方进行重置: 1.在程序的文件夹下,执行这样 ...

  7. WebDriver API 实例详解(一)

    一.访问某网页地址 被测试网页的网址: http://www.baidu.com Java语言版本的API实例代码: 方法1: package test; import org.testng.anno ...

  8. [LeetCode]206. Reverse Linked List(链表反转)

    Reverse a singly linked list. click to show more hints. Subscribe to see which companies asked this ...

  9. [转][访谈]数据大师Olivier Grisel给志向高远的数据科学家的指引

    原文:http://www.csdn.net/article/2015-10-16/2825926?reload=1 Olivier Grisel(OG)本人在InriaParietal工作,主要研发 ...

  10. Apache配置WSGI

    Apache配置WSGI 什么是WSGI WSGI被称作web服务器网关接口,在笔者看来其实是基于CGI标准针对Python语言做了一些改进,其主要功能是规范了web 服务器与Pythonj应用程序之 ...