首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建基于sinatra博客sinatra的文件

创建基于sinatra博客sinatra的文件
EN

Stack Overflow用户
提问于 2013-09-13 09:37:22
回答 1查看 76关注 0票数 1

我想创建一个基于文件的博客。我有几个脚本不能存储在数据库中/不太了解要存储的数据库/不适合存储。我认为这将是一个好主意,创建一个基于文件的博客。这不是一个博客。

我想使用的文件夹结构如下:

代码语言:javascript
运行
复制
App folder
 -- Posts 
 --- file1.erb
 --- file2.erb

 -- Posts2
 --- file3.erb
 --- file4.erb

如何读取Posts文件夹的内容并创建包含标题的数组?我知道我可以将它们存储在视图中,但我认为这些视图是用于站点布局的。

这就是我一直在做的:

代码语言:javascript
运行
复制
get '/posts1/:id'  do 
    erb "posts_#{params[:id]}".to_sym
end

get '/posts2/:id'  do 
    erb "posts2_#{params[:id]}".to_sym
end

在博客上注意,这不是博客,这只是解释它是什么的最简单的方式。

EN

回答 1

Stack Overflow用户

发布于 2014-02-12 04:02:46

我已经用Sinatra创建了几个使用Markdown的应用程序。请不要将ERB用于内容。

Markdown文件可能如下所示:

代码语言:javascript
运行
复制
title: Breathe
date: 2013-08-05

Breathe.

如果你的目录"Posts“中有markdown文件,你可以这样做:

代码语言:javascript
运行
复制
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)

添加辅助对象:

代码语言:javascript
运行
复制
require 'maruku'

def to_html(str)
  Maruku.new(str).to_html
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18776898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档