对取名没天分 - 学习使用 Sinatra

2015/07/13 | 2分钟阅读 | 更新于 2015/07/13

Sinatra

Sinatra 中文文档

使用日记

安装

gem install sinatra

最开始的 main.rb

require 'sinatra'
get '/' do
    "hello world"
end

erb 模板

require 'erb'
# ...
get '/' do
    erb:index
end

index.erb 默认放在 views 下面,也可以修改 :link

set :views, File.dirname(__FILE__) + '/templates'

CSS 和 JS 文件?

静态文件:link

连接数据库

暂时用了 sqlite3,部分代码

require 'sqlite3'

db_name = "db_4567.db"

sqll = "CREATE TABLE IF NOT EXISTS article_table (
	article_id INTEGER PRIMARY KEY AUTOINCREMENT, # 忘了是说主键还是自增了,必须是 INTEGER
	article_title VARCHAR,
	article_content TEXT,
	article_aurthor VARCHAR,
	article_date DATE NOT NULL,
	article_status TINYINT NOT NULL
);"

SQLite3::Database.open db_name do |db|
	db.execute(sqll)
end

插入一堆数据

为了批量插入了一堆数据写了这个,返回命令的字符串

def returnSql(k1,k2,k3,k4,k5)
	sqll = "INSERT INTO article_table (
		article_title,
		article_content,
		article_aurthor,
		article_date,
		article_status
		)
		VALUES ('#{k1}','#{k2}','#{k3}','#{k4}',#{k5});"
	sqll
end

**注意:**开始需要字符串格式的地方没有带单引号,会报错。原因可以自己 p 一下手输的命令和生成的命令字符串。

试图实现 xxx/article/9这样访问文章

首先要拿到后面的值,根据它在文章表里索引在模板中访问变量:link

模板和路由执行器在同样的上下文求值。 在路由执行器中赋值的实例变量可以直接被模板访问。

get 'article/:id'
# code  在这里读取数据库找出文章获取标题,内容,作者,时间,xx,xx,xx,xx,xx
end

直接肯定太长了

class Article
    # @xxx = ""
    def initialize(id)
        #@xxx=
    end
    def getXXX
       # @xxx
    end
end

展开依然很麻烦,拿到另外的文件去 main.rb 添加

$LOAD_PATH.unshift(File.dirname(__FILE__))
# ...
require 'article.rb'
# ...

于是

get '/article/:a_id' do
	@a_id = params[:a_id]
	@theArticle = Article.new(@a_id) #我好像写的不太规范
	if @theArticle.isExist?
		erb:article
	else
		erb:e404
	end
end

获取 get 和 post 请求?###

这样可以获取到

# xxx/essay?id=12345
get '/essay' do
	b = params[:id];
	b
end

#{id:12345}
post '/essay' do
	b = params[:id];
	b
end

想要返回 json?

require 'json'
a = {
    m:"abc",
    n:123
}
b = a.to_json

© 2026 香蕉引擎故障报告

🌱 Powered by Hugo with theme Dream.

关于

要怎么介绍自己呢,🤔。

很早以前是作为 Web 前端在学习的,但是工作第一年就成为了全干工程师。喜欢尝试各种东西,什么都会一点。

一直很喜欢 Ebiten 游戏引擎 ,特别简洁,用它做过一些小东西,可以查看这个分类 。另外特别推荐这个木鱼 ,是一个相对完整的小玩意儿,包含手搓的一个简单的 UI 框架;支持鼠标和键盘操作;有多语言和主题切换功能;同时支持 Web 端和客户端。它的源代码在 bin16/wooden-fish

主题

网站基于 Hugo,当前使用的是 hugo-theme-dream 主题的修改版 ,根据我的需要,做了一些对 PaperMod 的兼容。

我自己也写过主题 ,但是没有别人写的好看。

正在从我的笔记中往外搬运内容

等待更新:

  • 从《锈湖》中学了些什么东西
  • 我拿 React 写解谜游戏的经过
  • 基于 Pocketbase 的 Pocket Memos
  • 数独!