关于 SQLite 查询、Sinatra 和 erb 的最佳实践?
Best practices concerning SQLite queries, Sinatra, and erb?
我正在构建一个允许用户安装应用程序以添加特定功能的框架。目的是让用户通过小型网络应用程序管理这些应用程序。安装的应用程序列表存在于 sqlite3 数据库中,我正在使用 Sinatra 路由 http 请求。我正在使用 erb 模板来设计有问题的网页。
我的问题是,填充显示的已安装应用程序列表的最佳做法是什么?我应该在 Sinatra 'do' 块中进行 SQL 查询,然后将包含应用程序名称的数组传递给 erb 吗?或者我应该在 erb 文件本身中进行数据库查询?
在功能上,我确信它们非常相似(尽管如果存在功能差异,我想知道),但我希望尽可能遵循最佳实践:)
最佳做法是在 do
块中执行 SQL 查询,并将对象传递给模板。
在模板中编写过多的代码被认为是一个坏主意,如果您想在不同的路由中使用相同的模板,将获取逻辑与显示逻辑隔离开来会很有用。
通过使用 Ruby 的 duck typing,您可以使您的模板非常灵活。以 Haml 为例:
%ul
- @dataset.each do |row|
%li= row['name']
您需要做的就是为模板提供 Enumerable
个对象,这些对象都响应 []
。它可以是数据库查询的结果(我认为大多数 gems return 兼容的东西),或者它可以是 Hash
的硬编码 Array
例如。
我正在构建一个允许用户安装应用程序以添加特定功能的框架。目的是让用户通过小型网络应用程序管理这些应用程序。安装的应用程序列表存在于 sqlite3 数据库中,我正在使用 Sinatra 路由 http 请求。我正在使用 erb 模板来设计有问题的网页。
我的问题是,填充显示的已安装应用程序列表的最佳做法是什么?我应该在 Sinatra 'do' 块中进行 SQL 查询,然后将包含应用程序名称的数组传递给 erb 吗?或者我应该在 erb 文件本身中进行数据库查询?
在功能上,我确信它们非常相似(尽管如果存在功能差异,我想知道),但我希望尽可能遵循最佳实践:)
最佳做法是在 do
块中执行 SQL 查询,并将对象传递给模板。
在模板中编写过多的代码被认为是一个坏主意,如果您想在不同的路由中使用相同的模板,将获取逻辑与显示逻辑隔离开来会很有用。
通过使用 Ruby 的 duck typing,您可以使您的模板非常灵活。以 Haml 为例:
%ul
- @dataset.each do |row|
%li= row['name']
您需要做的就是为模板提供 Enumerable
个对象,这些对象都响应 []
。它可以是数据库查询的结果(我认为大多数 gems return 兼容的东西),或者它可以是 Hash
的硬编码 Array
例如。