0

皆さん、ページにCSSを追加しようとしている段階で、ルビーのチュートリアルに従っています。

ActionController::RoutingError (No route matches [GET] "/assets/blueprint/print.css"):

私のroutes.rbファイルが台無しになっていると思います:

FirstApp::Application.routes.draw do
  get "pages/home"
  get "pages/contact"
  get "pages/about"
  root :to => "home#index"

application.html.erb ファイル:

<!DOCTYPE html>
<html>
<head>
    <title><%= title %></title>


    <%= csrf_meta_tags %>
    <%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
    <%= stylesheet_link_tag 'blueprint/print', :media => 'print' %>
</head>
<body>

<%= yield %>

</body>
</html>

サーバー上のディレクトリ構造:

first_app% ls public 
404.html  422.html  500.html  downloads  favicon.ico  index.html.backup  master.zip  robots.txt  stylesheets

[vasiliy@vbweb]~/ruby/first_app% ls public/stylesheets 
blueprint

[vasiliy@vbweb]~/ruby/first_app% ls public/stylesheets/blueprint 
ie.css  plugins  print.css  screen.css  src
4

2 に答える 2

2

フォローしているチュートリアルを確認する必要がありますが、少し古いチュートリアル(Rails 3.1でアセットパイプラインが追加される前)に従っているようです。

ですから、物事は少し異なります。

スタイルシートは現在、app/assets/stylesheets

そのディレクトリに移動するだけでblueprint/screen.css、動作を開始するはずです。blueprint/print.css


しかし...非常にクールなので、アセットパイプラインがどのように機能するかを確認することをお勧めします。

見てみるとapplication.css、次のような数行が表示されます

/*
*= require_tree .
*= require_self
*/

これには、スタイルシートディレクトリ内のすべてのファイルが必要になります。これにより、すべてを実行する1行だけを作成できますstylesheet_link_tag :application

ただし、これでは、再生しようとしている印刷/スクリーンメディアの設定は行われません。

于 2013-01-25T00:29:26.417 に答える
1

ルートファイルは問題ないと思います。

stylesheet_link_tag参照は、assets/ディレクトリの下にあるアセットへの有効なパスを取得するRailsの「ビューヘルパー」です。これにより、Railsの「AssetPipeline」(グーグルに値する)を利用できます。これにより、本番環境のすべてのJSおよびCSSアセットを連結、縮小、および圧縮できます。一方、開発では、それらを個別のアセットとして残して、デバッグできるようにします。

public /フォルダーにはAssetPipelineアセットは含まれていません。代わりに、これらはWebルートの下に押し込まれるファイルにすぎません。これらは通常どおり参照できます。

<link rel="stylesheet" href="/blueprint/print">

ただし、ほとんどの場合、それらをapp / assetディレクトリに配置することをお勧めします。これにより、本番環境で適切に処理されます。href ='application'を参照するために使用されるstylesheet_link_tagを推測していますよね?したがって、cssをassets / stylesheetsの下に置き、assets / stylesheets/application.cssが「require_tree」などを実行することを再確認します。次に、これらのstylesheet_link_tag参照を削除して、元の参照に置き換えると、問題がないはずです。

于 2013-01-25T00:29:20.083 に答える