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 スタイルなどは表示されません。

そのため、サブディレクトリの使用が問題であると考え、すべての haml をベース ビュー ディレクトリに配置しました。ただし、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.

どんな助けでも大歓迎です。ありがとう。

関係あるかわかりませんが、開発にはショットガンを使用しています

4

3 に答える 3

5

layout.hamlで以下を使用してこれを修正しました。

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

したがって、html ソースで次のように表示される 127.0.0.1/about をヒットした場合と同じ場所で、スタイル シート フォームを取得する必要があります。

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

-vs-

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

sinatra と Haml で URL パスの変数を使用する URL パラメーターで、まだ問題が発生しています。

これらを使用すると、style.css ファイルへのリンクを作成する代わりに、css が後処理された html に埋め込まれます。処理された html は次のとおりです (doctype が台無しになっていて、タイトルが含まれていません)。

パスに 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 に答える