1

我的 index.haml 可以正常工作,例如:

get '/about' do
  haml :about
end

但是,如果我尝试使用如下用户参数:

get ':user/add' do
  haml :add_item
end

layout.haml 被忽略。

我试图让这个工作使用我的视图文件夹中的子目录,如:

/view/contact/add.haml

当它插入 =yield 内容时,它不会显示 layout.haml css 样式等。

所以我认为使用子目录是问题所在,并将我所有的 hamls 放在基本视图目录中。但是,似乎任何使用 url 参数(如 get ':user/add' )的东西都不会包含 layout.haml 。目前这是我做的一个测试:

我的应用程序.rb

require "rubygems"
require "sinatra"
require "haml"
require "data_mapper"
require "pony"

get '/' do #works fine
  haml :index
end

get '/:user_id/dashboard' do #recognizes the content but ignores layout.haml                                                                        
  haml :dashboard                                                                                        
end

我的layout.haml看起来像这样:

视图/layout.haml

!!!
%html
  %head
    %title Testing haml and sinatra
    %link(rel="stylesheet" href="css/style.css")  
  %body
    #wrapper
      #header
        %h1 HAML Test Template
        %h2 Made with Sinatra and HAML!

      #navigation
        %h1 Navigation

      #sidebar
        %h1 Sidebar

      #content
        =yield

      #footer
        %p
          This is the footer.

任何帮助将非常感激。谢谢。

我不知道这是否重要,但我正在使用霰弹枪进行开发

4

3 回答 3

5

我通过在 layout.haml 中使用以下内容解决了这个问题:

布局.haml

代替:

%link(rel="stylesheet" href="css/style.css")

替换(固定版本):

%link(rel="stylesheet" href="/css/style.css")

工作正常!希望这可以帮助某人。

于 2012-07-22T12:00:12.040 回答
0

如果有帮助,当我查看源代码时,它似乎正试图根据 url 参数“:user_id”在错误的位置访问我的 style.css,如下所示:

http://127.0.0.1:4567/test/myapp/css/style.css

因此,我需要让它从与 127.0.0.1/about 相同的位置获取样式表,这在 html 源代码中看起来像这样:

http://127.0.0.1:4567/css/style.css

在实际代码中,两个样式表链接是相同的,但由于我在一个子目录中,它找不到样式表style.css

http://127.0.0.1:4567/css/style.css *(exists in public/css/style.css)*

-对-

http://127.0.0.1:4567/test/myapp/css/style.css *(doesn't exist)*
于 2012-07-22T11:55:27.673 回答
0

我现在仍然看到使用 url 路径中带有 sinatra 和 Haml 的变量的 url 参数的问题。

使用这些时,我看到 css 嵌入到后处理的 html 中,而不是创建指向 style.css 文件的链接。处理后的 html 如下(即使是 doctype 乱七八糟,也不包括 title):

我现在在路径中看到 url 参数(例如 localhost:4567/user/add):

<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  body { text-align:center;font-family:helvetica,arial;font-size:22px;
    color:#888;margin:20px}
  #c {margin:0 auto;width:500px;text-align:left}
  </style>
</head>

而不是这个(例如 localhost:4567/about):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
  <head>
    <title>Test app</title>
    <link href='/css/style.css' rel='stylesheet' />
  </head>

我在这里想念什么?

于 2012-07-22T13:27:39.093 回答