Sinatra 4应用路由未识别及CSS加载失败问题求助
问题原因与解决办法
核心问题
你采用的是Sinatra模块化应用(继承Sinatra::Base),这类应用和Sinatra经典模式不同,默认不会自动启用静态文件服务,也不会自动启动服务器——这就是首页和CSS都加载失败的根本原因。
具体修复步骤
1. 调整application.rb代码
修改后的代码添加了静态目录配置和启动逻辑,确保应用能正确识别静态资源并启动:
require "sinatra" class ABC < Sinatra::Base # 显式指定静态文件目录(对应你存放CSS的public文件夹) set :public_folder, File.join(root, "public") # 保留原有的视图目录配置 set :views, Proc.new { File.join(root, "app", "views") } get "/" do erb :index end # 允许通过ruby application.rb直接启动服务器 run! if app_file == $0 end
2. 正确启动应用
两种启动方式可选:
- 方式一:直接运行application.rb
在终端执行命令:
启动后访问ruby application.rbhttp://localhost:4567,首页和/application.css都能正常加载。 - 方式二:通过rackup启动(使用config.ru)
在终端执行命令:
默认端口为9292,访问rackup config.ruhttp://localhost:9292即可。
3. 关于CSS路径的说明
你把CSS放在/public/application.css,视图里的<link rel="stylesheet" type="text/css" href="/application.css">路径是正确的,只要静态目录配置好就能正常加载。之前尝试访问的/assets/stylesheets/application.css是Rails的默认路径,并不适用于Sinatra的静态资源结构。
内容的提问来源于stack exchange,提问作者Sig
相关产品推荐
相关产品推荐

