2012-07-22 24 views
1

我index.haml工作正常使用,例如:HAML layout.haml和西納特拉不是URL工作參數

get '/about' do 
    haml :about 
end 

但是,如果我嘗試使用一個用戶參數,如:

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

layout.haml被忽略。

我試圖讓這個在我看來,像文件夾使用子目錄的工作:

/view/contact/add.haml

雖然它插入=產量內容,它不會顯示佈局.haml css風格等。

所以我認爲使用子目錄是問題,並把我所有的hamls在基本視圖目錄。不過,似乎任何使用像get::user/add這樣的url參數的東西都不會包含layout.haml。目前,這是一個測試,我做的事:

myapp.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. 

任何幫助將不勝感激。謝謝。

我不知道它的問題,但是我用獵槍發展

回答

0

如果有幫助,當我查看源代碼,看來,它正試圖訪問我的style.css錯了地方基於URL參數「:USER_ID」像這樣:

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)* 
5

我固定通過在layout.haml中使用以下內容:

佈局。HAML

相反的:

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

替換(固定版本):

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

工作正常!希望這有助於某人。

+0

它幫助了我,謝謝。 – slowpoke 2013-12-05 08:30:14

0

我現在仍然看到一個問題,現在使用URL參數中的變量與sinatra和Haml的url路徑。

使用這些時,我看到css變成嵌入到後處理的html中,而不是創建到style.css文件的鏈接。經過處理的HTML如下(甚至doctype是否搞砸,不包括標題):

我看到現在的路徑URL參數(例如本地主機:4567 /用戶/加):

<!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> 

取而代之的是(如本地主機:4567 /約):

<!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> 

缺少什麼我在這裏?

+0

修正了,錯誤地命名了haml文件。應該是views/user/add.haml,並將其命名爲views/user/add_user.haml – 2012-07-23 04:10:13