You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.rb
    
    启动后访问 http://localhost:4567,首页和/application.css都能正常加载。
  • 方式二:通过rackup启动(使用config.ru)
    在终端执行命令:
    rackup config.ru
    
    默认端口为9292,访问 http://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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:22:14