Rails + rabl

当我们使用rails generate scaffold的方式生成MVC的时候,rails会自动给我们生成一系列的文件,包括了如何用json显示model的view。这样其实默认了你的系统是一个CRUD的系统,但是我们知道RESTful不是CRUD。把model直接暴露出去不是一个很好的选择。

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

下面是具体的操作过程:

1.首先创建一个新的rails工程:

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

Rails + rabl,布布扣,bubuko.com

时间: 2024-10-11 10:43:58

Rails + rabl的相关文章

刻意练习--Rails RESTful(一)

一本被人反复提及的书<哪儿来的天才>中说过,大部分所谓的天才都是通过反复的刻意练习得到的.当你的练习时间达到10000小时以后,你就会成为该领域的专家. 最近在学习rails如何实现RESTful Web Service.自己想给自己设计一个练习的模板,进行反复练习.开发过程采用的是TDD的方式进行开发. 练习背景: 我们涉及三个Domain对象,Products.Orders.Payment 1.新建工程rails-rest-practice rails new rails-rest-pra

有意练习--Rails RESTful(一)

书要反复提及<哪里有天才>在说,大多数所谓的天才是通过反复刻意练习获得. 当你的练习时间达到10000几个小时后,.你将成为该领域的专家. 近期在学习rails怎样实现RESTful Web Service. 自己想给自己设计一个练习的模板,进行重复练习. 开发过程採用的是TDD的方式进行开发. 练习背景: 我们涉及三个Domain对象,Products.Orders.Payment 1.新建projectrails-rest-practice rails new rails-rest-pra

RailsCast26 Hackers Love Mass Assignment rails中按params创建、更新model时存在的安全隐患

Mass assignment是rails中常用的将表单数据存储起来的一种方式.不幸的是,它的简洁性成了黑客攻击的目标.下面将解释为什么及如何解决. 上述表单为一个简单的注册表单.当用户填入name,点击提交时,一个新用户被创建.用户模型被如下定义: ruby create_table :users do |t| t.string :name t.boolean :admin, :default => false, :null => false end 当用户点击提交时,如下的action被执

Rails 5 开发进阶

Rails 5 开发进阶:https://www.gitbook.com/book/kelby/rails-beginner-s-guide/details cancan : http://blog.xdite.net/posts/2012/07/30/cancan-rule-engine-authorization-based-library-1/ Ruby官方文档翻译(Ruby官方文档中文版) : http://blog.csdn.net/liuk10/article/details/509

nginx unicorn 来运行rails

一.安装nginx sudo apt-get install nginx 安装完成后查看一下:nginx -v 说明安装成功. ubuntu系统里的安装目录是在/etc/nginx/下,启动程序文件在/usr/sbin/nginx 二.新建项目 rails new app --skip-bundle 完成后修改Gemfile文件:vim Gemfile 把source 修改成taobao或者ruby-china的源. 在这个文件里加入:gem 'unicorn' 然后运行:bundle inst

rails中是如何实现定时任务的之sidetip

环境:ubuntu14.4,ruby2.1.5, rails4.2 sidetip 依赖于sidekiq,所以在Gemfile里要添加sidekiq. 一.新一个rais项目:rails new schedule_job --skip-bundle 进入项目文件夹: cd schedule_job 打开Gemfile文件:vim Gemfile 把source 'https://rubygems.org'改为source 'https://ruby.taobao.org'. 在文件里加入:gem

rails.vim环境安装(ubuntu)

学习和开发Ruby & Rails已经一年多了.但是正式全职Rails项目的开发只有可怜的4个月经验.这期间我一直使用Netbeans 6.x作为开发工具,到目前为止我依然认为它是开发Ruby & Rails程序的最佳开发工具(我没用过最新出来的RubyMine,另外这是一个付费产品,我也不会付费用它,但也不会用D版). 在网上可以看到很到开发Rails的同学使用Vim这个神器来开发的(就在JaveEye也有不少).但是由于我的vim水平只局限于只会使用有限的几个命令( i, :w, :x

how to change the ruby and rails version

changing ruby version checking ruby version run(if you had have install rvm to manage rubies: $rvm list $rvm use ruby-2.0.0-p643 --defualt changing rails version: changing the rails versions when running rails new to build a new app(installing rails

ruby on rails如何安装

很多朋友在学习ruby语言时,因为才接触,对于ruby基础知识都不知道,比如ruby on rails安装等基础教程,下面就一起来看看安装ruby on rails教程(http://www.maiziedu.com/course/ruby/)吧: 第一,安装ruby,首先从 http://www.ruby-lang.org/zh_CN/downloads/ 下载 Ruby 的Windows 稳定安装版 Ruby 1.8.6 一步安装 (md5: 00540689d1039964bc8d844b