有关SQLite查询,Sinatra和erb的最佳实践?

时间:2015-04-02 22:29:31

标签: ruby sqlite web-applications sinatra erb

我正在构建一个允许用户安装应用以添加特定功能的框架。目的是让用户通过一个小型Web应用程序管理这些应用程序。已安装的应用程序列表存在于sqlite3数据库中,我使用Sinatra来路由http请求。我使用erb模板来设计相关的网页。

我的问题是,填充我显示的已安装应用列表的最佳做法是什么?我应该在Sinatra' do'中进行SQL查询。阻止然后将包含应用程序名称的数组传递给erb?或者我应该在erb文件中进行数据库查询吗?

从功能上讲,我确定它们非常相似(尽管如果存在功能差异,我想知道),但我希望尽可能遵循最佳实践:)

1 个答案:

答案 0 :(得分:1)

最佳做法包括在do块中执行SQL查询,并将对象传递给模板。

在模板中编写太多代码被认为是一个坏主意,如果您想要使用来自不同路径的相同模板,将提取逻辑与显示逻辑隔离可能很有用。

通过使用Ruby的鸭子打字,您可以使模板非常灵活。比如Haml:

%ul
  - @dataset.each do |row|
    %li= row['name']

您需要做的就是为模板提供Enumerable个对象,这些对象都响应[]。它可能是数据库查询的结果(我认为大多数宝石返回兼容的东西),或者它可以是例如Array的硬编码Hash