Rails + rabl

5 篇文章 0 订阅

当我们使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值