【问题标题】:issues finding public folder when requiring sinatra/base需要 sinatra/base 时查找公用文件夹的问题
【发布时间】:2011-10-13 02:26:20
【问题描述】:

我发现在我的 Sinatra 应用程序中,当我 require 'sinatra' 时,我可以按预期访问我的公用文件夹,但当我 require 'sinatra/base' 时我不能。这是我的相关代码(在我更改为 /base 之前有效):

config.ru

root = ::File.dirname(__FILE__)
require ::File.join( root, 'app' )
run MyApp.new

app.rb

require 'sinatra'
require 'sinatra/namespace'
require 'haml'

class MyApp < Sinatra::Application
  # ...
end

require_relative 'models/init'
require_relative 'helpers/init'
require_relative 'routes/init'

script.haml

%script(type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
%script(type="text/javascript" src="/js/table.js")
%link(rel="stylesheet" type="text/css" href="/css/table.css")

是的,我有正确的目录结构。就像我说的,它使用require sinatra 工作。任何人都知道为什么会发生这种情况以及我可以做些什么来解决它?

【问题讨论】:

    标签: ruby sinatra haml


    【解决方案1】:

    需要Sinatra::Base 不会设置任何默认configuration settings,而需要Sinatra 会设置。您需要自己将set :public_folder ... 设置为合适的值,例如:

    set :public_folder, 'public'
    

    【讨论】:

    • 谢谢!就是这样,我没有意识到需要 Sinatra 的两种方法之间的区别。注意,:public 后面需要一个逗号。
    • 糟糕,对逗号感到抱歉 - 已修复
    • 解决了我的问题,非常感谢!顺便说一句,语法已更改为set :public_folder
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多