Docs 菜单

查看MongoDB数据 - Sinatra

1

在项目的根级别,创建一个名为 app.rb 的文件。 将以下内容粘贴到 app.rb文件中,以加载必要的 gem 和配置文件:

require 'sinatra'
require 'mongoid'
Mongoid.load!(File.join(File.dirname(__FILE__), 'config', 'mongoid.yml'))
2

app.rb文件中,创建一个名为 Restaurant 的模型来表示来自 sample_restaurants数据库中示例restaurants集合的数据:

class Restaurant
include Mongoid::Document
field :name, type: String
field :cuisine, type: String
field :borough, type: String
end
3

使用 HTML 和Ruby创建视图,以指定方式显示数据。

在项目的根级别,创建一个名为 views 的目录。 然后,创建一个名为 list_restaurants.erb 的文件。 将以下代码粘贴到 list_restaurants.erb文件中:

<!DOCTYPE html>
<html>
<head>
<title>Restaurants List</title>
</head>
<body>
<h1>Restaurants List</h1>
<table border="1">
<tr>
<th>Name</th>
<th>Cuisine</th>
<th>Borough</th>
</tr>
<% @restaurants.each do |restaurant| %>
<tr>
<td><%= restaurant.name %></td>
<td><%= restaurant.cuisine %></td>
<td><%= restaurant.borough %></td>
</tr>
<% end %>
</table>
</body>
</html>
4

app.rb文件中,添加名为 list_restaurantsget 路由,如以下代码所示:

get '/list_restaurants' do
@restaurants = Restaurant
.where(name: /earth/i)
erb :list_restaurants
end

此路由检索 name字段的值包含字符串 "earth"Restaurant 个文档。 该路由使用 list_restaurants 视图呈现结果。

5

您可以使用 to_json 方法以JSON格式显示结果,而不是生成视图来呈现结果。

app.rb文件中的 list_restaurants 路由替换为以下代码,以JSON文档形式返回结果:

get '/list_restaurants' do
restaurants = Restaurant
.where(name: /earth/i)
restaurants.to_json
end
6

从应用程序根目录运行以下命令,启动Ruby Web服务器:

bundle exec ruby app.rb

服务器启动后,会输出以下消息,指示应用程序正在端口 4567 上运行:

[2024-10-01 12:36:49] INFO WEBrick 1.8.2
[2024-10-01 12:36:49] INFO ruby 3.2.5 (2024-07-26) [arm64-darwin23]
== Sinatra (v4.0.0) has taken the stage on 4567 for development with backup from WEBrick
[2024-10-01 12:36:49] INFO WEBrick::HTTPServer#start: pid=79176 port=4567
7

在网络浏览器中打开URL http://localhost:4567 /list_restaurants 。该页面显示餐厅列表以及每家餐厅的详细信息:

呈现的餐厅列表