想象一下,一個簡單的博客,我們有一個名爲PostsController控制器,它有兩個動作:食指和顯示
當用戶點擊http://yourwebsite.com/posts索引動作叫做 - 此操作將顯示所有可用的博客文章。
當用戶得到一個特定的博客文章顯示操作稱爲 - 即http://yourwebsite.com/posts/article-about-something-interesting
比方說,我們要索引頁有一個兩點欄佈局,我們希望每個博客,文章展示頁面有三列布局。爲了實現這一點,我們只需定義兩個單獨的佈局(在app/views/layouts文件夾中) - 我們將調用兩個列布局「application」,我們將調用三列布局「alternate」。
爲了得到索引頁使用兩欄佈局和顯示頁面中使用的三欄佈局,我們可能只是做我們的控制器如下:
class PostsController < ApplicationController
def index
@posts = Post.all
render :layout => "application"
end
def show
@post = Post.find(params[:id])
render :layout => "alternate"
end
end
如果我們想所有操作使用相同的佈局,我們就可以做到這一點:
class PostsController < ApplicationController
layout "application"
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
end
最後,如果我們不指定我們要使用,那麼Rails會在默認情況下,使具有相同名稱的任何佈局,佈局我們正在顯示的資源。因此,在我們的示例中,如果我們的資源被稱爲「帖子」,如果我們定義名爲posts.html.erb的第三個佈局(在app/views/layouts中),那麼當用戶呈現任何動作時,Rails將自動使用該佈局在PostsController - 當然,我們並沒有明確要求的Rails呈現另一種佈局提供....
希望它能幫助,
噢,如果只有一個佈局,被稱爲「application.html.erb」 ,那麼rails會使用它,而不必告訴它 – stephenmurdoch 2010-07-04 20:49:56