我以前从未在 sinatra 中做过任何事情,并决定在一个项目中尝试一下。我对脚本加载的工作方式感到困惑。它似乎间歇性地工作。有时 2 个脚本/css 文件会有内部服务器错误,有时它们都会有错误。
这是我的 layout.erb :
<!doctype html>
<html>
<head>
<title>An HTML5 box of sand</title>
<meta charset="utf-8" />
<link href='http://fonts.googleapis.com/css?family=Arvo' rel='stylesheet' type='text/css'>
<link rel="stylesheet/less" type="text/css" href="/assets/stylesheets/style.less">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script><!--loads jquery-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script><!--loads jquery ui-->
<script type="text/javascript" src="/assets/js/lib/handlebars.js"></script>
<script src="/assets/js/lib/less-1.3.0.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/assets/js/script.js"></script><!--This is the place where you play!!!-->
</head>
<body>
<%= yield %>
</body>
</html>
我在公用文件夹 /public/assets 中有资产文件夹。这很奇怪,因为有时它会加载 assets/js/script.js 文件,而不是加载把手文件。其他时候它会加载把手而不是 script.js 文件。我不确定发生了什么。
~~~~~~~~~~~~~~~~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
发现了问题,但不知道如何解决。
所以,似乎是因为我正在使用数据映射器 auto_migrate!方法在某种程度上搞砸了资产的加载方式。有什么我可以做的吗?这是我的 app.rb 文件中的内容:
require 'rubygems'
require 'sinatra'
require 'data_mapper'
# Include the models
require './models/User'
# Connect to mysql
DataMapper.setup(:default, "mysql://root@localhost/dev_landing")
#This line is what is messing everything up.
DataMapper.auto_migrate!
set :public_folder, 'public'
get '/' do
erb :home
end
我这样设置数据映射器是因为我在一个教程中读到,这就是你如何让它自动创建你在模型中指定的表。有没有更好的方法来做到这一点,这样它就不会弄乱我的脚本和 css 的加载?