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 '/' doslim:index
end#Inline templates always come after the __END__ declaration, and each template begins with @@.__END__@@layout
doctype html
htmlheadmeta charset="utf-8"title Just Do itlink rel="stylesheet" media="screen,projection" href="/style.css"/[if lt IE 9]script scr="http://html5shiv.googlecode.com/svn/trunk/html5.js"bodyh1 Just Doi it== yield @@index
h2 My tasks
ul.tasksli 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(' ').capitalizeslim :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

转载于:https://www.cnblogs.com/lizunicon/p/3600814.html

[sinatra] Just Do It: Learn Sinatra, Part One Darren Jones相关推荐

  1. ruby sinatra mysql_Ruby web微框架 – sinatra

    Sinatra是一个以最小的消耗快速创建Ruby web应用的DSL. # myapp.rb require 'sinatra' get '/' do 'Hello world!' end 安装gem ...

  2. sinatra 基本用法

    sinatra 不同于rails,是一个轻量级的ruby 框架,非常轻巧灵活. 基本用法如官网所述: #!/usr/bin/env ruby require 'sinatra'get '/frank- ...

  3. 使用docker构建并测试一个基于Sinatra的Web应用程序

    内容来自<第一本Docker书>5.2节和博文整理而成 使用Docker构建并测试Web应用程序 在这个例子里,我们将创建一个应用程序,它接收输入的URL参数,并以JSON散列的结构输出到 ...

  4. 【sinatra】安装测试

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

  5. Sinatra 搭建服务和使用 POST 和 GET 请求服务示例(简单但实用)

    Ruby 的 Sinatra 其实有点类似于 Python 的 Flask.我另外一篇博客也写了用 Flask 搭建服务和使用请求服务示例:https://blog.csdn.net/Tomorrow ...

  6. 玩转Docker实战篇!使用Docker搭建Sinatra Web程序,附加介绍容器关联(Docker Networking、Docker链接)

    一.本文目的 前面一篇文章,我们在Docker中搭建了Nginx服务器,并访问了Nginx服务器:https://blog.csdn.net/qq_41453285/article/details/1 ...

  7. 【微型Web框架(Ruby) Sinatra】

    Sinatra:一个优雅地包装了Web开发的DSL Sinatra程序的三个基本组成部分: 路由(route): '/' 就是路由.路由可以是单一的路径,或者带有参数的路径(比如 /:name),甚至 ...

  8. Bundler 的作用及原理

    Bundler 的作用及原理 翻译 · yesmeck · Created at one year ago · Last by teacafe2000 Replied at one year ago  ...

  9. Docker学习笔记五 在测试中使用Docker

    2019独角兽企业重金招聘Python工程师标准>>> 5.1 使用Docker测试静态网站(Nginx) 将项目命名为Sample 首先建立构建环境 mkdir sample cd ...

最新文章

  1. 环境搭建 - 奥比中光3D摄像头(Astra Mini)
  2. mysql约束条件整型_MySQL 数据类型(整型,浮点型,字符类型,日期类型,枚举和集合) 约束条件 自增...
  3. 2012-12-21
  4. mysql 分组占比_含泪整理MySQL索引
  5. linux下用户配置文件与系统配置文件
  6. RabbitMQ基本概念
  7. dapper使用时性能优化
  8. 老男孩Day1作业(一):编写登录接口
  9. No package ‘mate-desktop-2.0‘ found
  10. HashMap底层结构
  11. python读取grd数据_Matlab读取grd格式的文件
  12. 网络附加存储技术与磁盘阵列柜的对比
  13. MYSQL 名人博客
  14. 图数据库扫盲和图数据选用
  15. BAT32G137 移植threadX
  16. sox源码分析:sox_find_effect()
  17. 双向可控硅实现 插头防插拔火花
  18. 使用webrtc开发直播系统源码,开发音视频语聊房
  19. 【汇正财经】什么是股权结构?
  20. python 通讯录 字典_Python实现命令行通讯录

热门文章

  1. 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一
  2. Linux的fork实现原理,【Linux】Fork炸弹详解
  3. java datahandler_Java Web Services:使用DataHandler类发送文件
  4. mysql h 127.0.0.1_MySQL 连接时尽量使用 127.0.0.1 而不是 localhost
  5. OpenCV中的二进制鲁棒独立基本特征——BRIEF
  6. GitHub开源的吃鸡版超级玛丽
  7. 基于YOLO的目标检测界面化部署实现(支持yolov1-yolov5、yolop、yolox)
  8. 【camera-lidar】自动驾驶相机-激光雷达融合方案综述
  9. window和linux和android进程内存CPU等监控软件
  10. keras 的 example 文件 addition_rnn.py 解析