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