我想创建一个基于文件的博客。我有几个脚本,我无法存储在数据库中/不了解数据库存储/将是一个不合适的。我虽然创建一个基于文件的博客是个好主意。这不是一个博客。
我想使用的文件夹结构如下:
App folder
-- Posts
--- file1.erb
--- file2.erb
-- Posts2
--- file3.erb
--- file4.erb
如何阅读Posts文件夹的内容并创建包含标题的数组?我知道我可以将它们存储在视图中,但我认为这些视图是针对网站布局的。
这就是我一直在做的事情:
get '/posts1/:id' do
erb "posts_#{params[:id]}".to_sym
end
get '/posts2/:id' do
erb "posts2_#{params[:id]}".to_sym
end
在博客上注意,它不是博客,它只是解释它的最简单方法。
答案 0 :(得分:0)
我用Sinatra创建了几个使用Markdown的应用程序。请勿将ERB用于内容。
Markdown文件可能是这样的:
title: Breathe
date: 2013-08-05
Breathe.
鉴于你的目录“帖子”有markdown文件,你可以这样做:
Dir.glob "./app/posts/*.md" do |file|
meta, content = File.read( file). split("\n\n", 2)
article = OpenStruct.new YAML.load( meta)
article.date = Time.parse article.date.to_s
article.content = content
article.slug = File.basename(file, '.md').gsub("_", '-')
on "#{article.slug}" do
erb :post, locals: { article: article }
end
end
根据降价文件的文件名创建路线。因此,如果它被称为“呼吸”,那么路线就是“呼吸”
在您的ERB文件中,您需要使用
to_html(article.content)
添加帮助:
require 'maruku'
def to_html(str)
Maruku.new(str).to_html
end