跳轉至內容

Ruby on Rails/ActionView/佈局檔案

來自華夏公益教科書,開放的書籍,開放的世界

佈局檔案

[編輯 | 編輯原始碼]

上一章解釋瞭如何將輸出渲染到預設佈局或您提供的特殊佈局。您可能已經檢視過這樣的佈局檔案。它的預設內容類似於

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Products: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
</head>
<body>
<p style="color: green"><%= flash[:notice] %></p>
<%= yield %>
</body>
</html>

通常,佈局的頭部部分包含一個樣式表的嵌入式標籤,並且整個內容使用 yield 標籤表示

資源標籤

[編輯 | 編輯原始碼]

所有資源標籤,例如“stylesheet_link_tag”都是生成正確 HTML 的小助手。您可以使用這些標籤來嵌入 CSS、Java Script 和影像或提供 RSS 提要。

要嵌入 Javascript 或 CSS,您可以使用相應的助手

<%= javascript_include_tag "my_javascript" %>

或者如果您想包含 CSS

<%= stylesheet_link_tag "my_css" %>

所有這些檔案都位於 public 目錄中public/javascriptspublic/stylesheets。無需提供副檔名,Rails 會自動處理。要包含多個檔案,只需在標籤中提供所有檔名即可

<%= stylesheet_link_tag "my_css", "my_other_css" %>

當然,這些檔案可以放置在應用程式的任何位置,只需確保提供正確的路徑即可

<%= stylesheet_link_tag "my_css", "files/stylesheet" %>

要載入所有檔案到您的public/javascriptspublic/styleheets中,請使用帶有:all

<%= javascript_include_tag :all %>

的相應標籤。嵌入 CSS 時,您可以在標籤中指定 media 屬性

<%= stylesheet_link_tag "my_print", media => "print" %>

沒有現代網站是完整的,沒有使用圖片和圖形,所以 Rails 提供了自己的影像標籤

<%= image_tag "my_image" %>

與 JavaScript 或 CSS 一樣,Rails 預設情況下會查詢public/images以找到合適的圖片。**注意:**您無需告訴 Rails 您使用 .jpg、.gif 或 .png!您也可以提供自定義路徑和 HTML 屬性

<%= image_tag "images/my_image", :height => 50, :width => 50, :alt => "This is my image" %>

“yield”意味著這是一種佔位符,用於顯示在佈局中的檢視,但您不限於使用單個 yield

<body>
  <%= yield :header %>
</body>

要訪問:header,您可以使用“content_for”方法。因此,使用上面的示例,可能是

<% content_for :header do %>
  <h1>Hello Rails - This is my header</h1>
<% end %>

命名 yield 可用於選單、頁尾或側邊欄,以簡化維護。只需將它們放在您的程式碼中,它們就會被放置在正確的位置。

區域性

[編輯 | 編輯原始碼]

是時候更加 DRY 了。如果您有很多 HTML 程式碼在許多不同的檢視中重複出現(例如 表單、動態選單等),您可能需要考慮使用區域性:使用區域性,將您經常使用的程式碼移到一個單獨的檔案中,並在應該使用區域性的檔案中放置一個連結

<%= render :partial => "form" %>

這將在呼叫區域性的資料夾中查詢名為_form.html.erb的檔案。在您的檔名中使用下劃線以告訴 Rails 它是一個區域性。

要將您的區域性移動到一個單獨的資料夾中,請使用

<%= render :partial => "partials/form" %>

將在“partials”中查詢名為_form.html.erb

的檔案。總的來說,區域性可以最大限度地減少一遍又一遍地複製相同程式碼的工作量,但可以將所需的程式碼儲存在單個檔案中,這些檔案可以輕鬆修改,並且可以根據需要使用。

華夏公益教科書