1. Install sinatra gem

gem install sinatra --no-ri --no-rdoc

2. Basic App

#!/usr/bin/ruby
require 'sinatra'
get '/' do
"Just Do It"
end

ruby低于1.9,需要在文件开头加require 'rubygems'

ruby basic.rb

Open up your browser and go to http://localhost:4567.

3. Inline Template

Slim is a fantastic template engine that makes this a much easier task.

Install slime: $ gem install slime

#!/usr/bin/ruby
require "sinatra"
require 'slim' get '/' do
slim:index
end #Inline templates always come after the __END__ declaration, and each template begins with @@. __END__ @@layout
doctype html
html
head
meta charset="utf-8"
title Just Do it
link rel="stylesheet" media="screen,projection" href="/style.css"
/[if lt IE 9]
script scr="http://html5shiv.googlecode.com/svn/trunk/html5.js"
body
h1 Just Doi it
== yield @@index
h2 My tasks
ul.tasks
li Get Milk

"@@layout" template: This will automatically be rendered with every view and provides a basic HTML5 scaffolding. The key line in the layout template is right at the end (==yield). The yield statement renders the content from the whichever template was requested by the handler (in this case, ‘index’).

4. Extend Views (把视图分离出来)

5. Dynamic Content

在主文件rb中增加代码

get "/:task" do
@task=params[:task].split('-').join(' ').capitalize
slim :task
end

让‘@task’ equal to the value of params[:task]

对应的视图文件task.slim

h2 My Tasks
= @task

其中@task匹配对应的URL。

6.Forms(窗体处理)

本例把index.slim的内容替换成

form action="/" method="POST"
input type="text" name="task"
input.button type="submit" value="New Task >>"

这样会在“/”页面显示一个窗体(一个文本框、一个提交按钮)

提交的内容需要一个handler来处理,再sinatra文件中用post(对应窗体提交method),代码如下:

post '/' do
@task = params[:task]
slim :task
end

[sinatra] Just Do It: Learn Sinatra, Part One Darren Jones的更多相关文章

  1. 【sinatra】安装测试

    $ gem install sinatra 测试: $ subl app.rb app.rb内容: require 'sinatra' get '/' do "Hello, World!&q ...

  2. docker镜像的操作

    在主机上列出镜像 sudo docker images 每从Docker Hub下载一个镜像就会启动相对的创建一个容器 在镜像列表中看到三个重要的东西: 来自什么镜像源,例如ubuntu 每个镜像都有 ...

  3. KVM管理平台openebula安装

    1.1opennebula控制台的安装 (如果要添加映像需要给200G以上给/var/lib/one,本文是共享/var/lib/one实现监控,用映像出创建虚拟机原理是从opennebula控制平台 ...

  4. docker实战——在测试中使用Docker

    在之前几章中介绍的都是Docker的基础知识,了解什么是镜像,docker基本的启动流程,以及如何去运作一个容器等等. 接下来的几个章节将介绍如何在实际开发和测试过程中使用docker. 将Docke ...

  5. Docker 创建image

      images 是containers的基础.每次使用docker run 命令都要指定image.   列出本地images   zane@zane-V:~$ docker images REPO ...

  6. 关系型数据库与NoSQL的对比

    SQL(结构化的查询语言)数据库是过去四十年间存储数据的主要方式.20世纪90年代末随着Web应用和MySQL.PostgreSQL和SQLite等开源数据库的兴起,用户爆炸式的增长. NoSQL数据 ...

  7. [Sinatra、Mongo] Mongo

    Mongo is a document-oriented database. Install the required gems: gem install mongo gem install bson ...

  8. Sinatra+SQLite3+DataMapper - 十分完整的tutorial - “Superdo”

    原文地址:https://ididitmyway.herokuapp.com/past/2010/3/30/superdo_a_sinatra_and_datamapper_to_do_list/ 这 ...

  9. [sinatra] Sinatra再入门

    原文URL:http://www.rubycc.com/bbs/topic_detail/86 1.基础代码app.rb require 'rubygems' require 'sinatra/bas ...

随机推荐

  1. asp.net 把数据导出为excel

    本篇介绍c#中如何使用DataTable导出Excel,至于其他的导出方法,这里不作介绍! 1.首页从数据库读取数据,得到DataTable: DataTable dt = HelperExecute ...

  2. Asp.net MVC 批量删除数据

    ProductList视图 <div class="mid"> <div id="editInfo"> @using (Html.Beg ...

  3. js中的类GET方法

    其实是通过js语句自己建的函数 function request(strParame){ var args = new Object(); ); var pairs = query.split(&qu ...

  4. http://blog.csdn.net/pi9nc/article/details/23169357

    http://blog.csdn.net/pi9nc/article/details/23169357

  5. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了

    引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中?         本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...

  6. Android百度地图开发(一)之初体验

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...

  7. Java基础——常用类(Date、File)以及包装类

    本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.S ...

  8. 面向对象编程(八)——this关键字

    很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚. this(隐式参数) 普通方法中,this总是指向当前调用该方法的对象. 构造方法中,this总是指向正要初始 ...

  9. WCF第一个Demo

    参考文献:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 自己学习的Demo 第一个是控制台宿主服务,第二个是Windows服 ...

  10. eclipse 插件未安装成功定位

    以gef未安装成功为例 在eclipse根目录下: eclipse –clean –console –noExit 右击窗口标题栏,属性,勾中快速编辑模式,这样可以在命令行窗口点击右键将剪贴板上的内容 ...