簡體   English   中英

紅寶石Rails教程CSS

[英]ruby rails tutorial css

伙計們,我一直在遵循ruby教程,在這一步中,我試圖向頁面添加一些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

您應該檢查您正在遵循的教程,但似乎您正在遵循一個稍舊的教程(在Rails 3.1中添加資產管道之前)

因此情況有所不同。

現在應該將樣式表保存在app/assets/stylesheets

如果你只是移動blueprint/screen.cssblueprint/print.css到該目錄,就應該開始工作。


但是...您可能想看看資產管道的工作原理,因為它非常酷。

看看application.css ,您會看到幾行,例如

/*
*= require_tree .
*= require_self
*/

這將需要stylesheets目錄中的所有文件,因此,只需一行stylesheet_link_tag :application就可以完成所有操作。

但是,這不會執行您嘗試使用的打印/屏幕媒體設置。

我認為您的路線文件很好。

stylesheet_link_tag引用是Rails的“視圖幫助器”,可為您提供位於Assets /目錄下的資產的有效路徑。 這使您可以利用Rails的“資產管道”(值得搜索),它將連接,最小化和壓縮生產中所有JS和CSS資產的內容。 另一方面,在開發中,它將保留它們作為單獨的資產,因此您可以調試東西。

public /文件夾不包含Asset Pipeline資產-而是這些只是被推到webroot下的文件。 這些可以照常引用:

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

但是,您幾乎可以肯定要將它們放入app / assets目錄,以便在生產中正確處理它們。 我猜用來引用href ='application'的stylesheet_link_tag對吧? 因此,將您的CSS放在資產/樣式表下,然后再次檢查資產/樣式表/application.css是否執行“ require_tree”或類似操作。 然后,如果您擺脫了這些stylesheet_link_tag引用,並用原始引用替換了它們,那應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM