当我们使用rails generate scaffold的方式生成MVC的时候,rails会自己主动给我们生成一系列的文件,包含了怎样用json显示model的view。这样事实上默认了你的系统是一个CRUD的系统,可是我们知道RESTful不是CRUD。把model直接暴露出去不是一个非常好的选择。

rabl是一个DSL能够方便定制生成对象的显示信息的gem:https://github.com/nesquena/rabl

以下是详细的操作过程:

1.首先创建一个新的railsproject:

rails new rabl-app

2.在Gemfile中加入rabl的依赖:

gem 'rabl'

3.创建Model:

rails g model Blog title:string author:string content:text

4.迁移数据库:

rake db:migrate

5.创建controller:

在app/controllers下创建一个新的空文件blogs_controller.rb

内容例如以下:

class BlogsController < ApplicationController

   def index

      @blogs = Blog.all

   end



   def show

      @blog = Blog.find(params[:id])

end

end

能够使用stub数据用于測试:

@blog = Blog.new({:id => 3, :title => "good title", :author => "good author", :content => "good content"})

6.创建rabl相应的view:

在app/views下创建一个新的空目录blogs:

在app/views下创建两个新文件:index.json.rabl和show.json.rabl

show.json.rabl:

object @blog

attributes :id, :title, :author, :content

index.json.rabl:

collection @blogs



extends "blogs/show"

7.配置route

在routes.rb中:

Rails.application.routes.draw do

  resources :blogs

end

8.启动server

rails s

訪问:http://localhost:3000/blogs/3.json

得到结果:

{"blog":{"id":3,"title":"good title","author":"good author","content":"good content"}}

我们上面的样例仅仅是演示了怎样在rails中使用rabl,并非说上面的显示方法就是好的构造对象现实的方法,很多其它的能够看看:

https://github.com/nesquena/rabl

http://railscasts.com/episodes/322-rabl?

view=similar

最新文章

  1. 浩瀚PDA开单器-结束手工开单模式【百货、商超】PDA安卓智能手持POS 进销存管理系统移动收银管理软件
  2. 【CSS3】---阴影 box-shadow
  3. 刷新的时候jquery获取checkbox是否为选中和设置选中
  4. j2ee tomcat 部署学习
  5. IOS之富文本编辑
  6. Python并发编程
  7. C++基础题--float型以整型格式输出
  8. kettle 6.1 按时间增量抽取数据
  9. eclipse经常出现——未响应!!!
  10. 工程设计文档服务EngineerCMS
  11. JavaScript——语法与数据类型
  12. jsp标签之jsp:setProperty用法
  13. Java 8新特性之 Nashorn(八恶人-6)
  14. 由一篇吐槽对String空字符串判断的文章所引发的碎碎念
  15. poj 2125 Destroying The Graph 最小割+方案输出
  16. android随机运算器开发小结1
  17. Oracle通用分页存储过程的创建与使用
  18. iOS支付宝支付集成
  19. HTML - 隐藏滚动条但可以滚动
  20. 静态库lib

热门文章

  1. PostgreSQL Replication之第八章 与pgbouncer一起工作(3)
  2. stuff(param1, startIndex, length, param2)
  3. es6 学习2 模板字符
  4. 关于vue自定义事件中,传递参数的一点理解
  5. 【Henu ACM Round#20 E】Star
  6. SCU 1095运送物资(最短路)
  7. Flexible implementation of a system management mode (SMM) in a processor
  8. vmware下ubuntu的网络配置
  9. awk技巧
  10. SharePoint Search之(五)Query spelling correction— 查询拼写纠正