2009-12-09 262 views
0

如routes.rb中所指定的,是否可以自動將指定的佈局模板分配給特定的控制器以及嵌套在其中的所有資源?此佈局應該只應用指定的控制器視圖和嵌套在其中的那些視圖;它不需要應用於應用程序中的每個視圖,就像application.html.erb會(我實際上使用具有嵌套佈局的應用程序佈局的專用佈局)。Rails嵌套資源的嵌套佈局

因此,舉例來說,如果我有

map.resources :news, :shallow => true do |n| 
    n.resources :articles do |a| 
    a.resources :comments 
    end 
end 

當我訪問一個網址像localhost/news/1/articles/new我應該看看我在行動news.html.erb佈局。截至目前,我沒有。

我顯然不希望爲嵌套在父級中的每個控制器重新創建相同的佈局文件(即使我將佈局中的肉拉出並放入共享的部分中)。我對在特定的控制器本身中指定佈局模板的興趣更低(這個具體的例子是一種暫時的事情,儘管我會在這一點上有一個'真正的'用例)。

謝謝!

回答

1

編輯爲清晰起見,原來的問題(答案是不完全應答的中心問題),我意識到我需要做的是有嵌套控制器類從頂級父繼承。這不僅使得解決中心問題變得更容易,而且還修復了其他一些令我煩惱的事情。

(我會說「a'doy」但也有其他人對這個應用程序,它掩蓋什麼,通常會更明顯一點的工作。)

0

對於你的news.html.erb問題,是一個錯字?你應該看到你的views/articles文件夾中的new.html.erb文件(假設默認佈局),而不是news.html.erb文件。您必須確保您的@news實例變量已設置,並且您的form_for將用於[@news,@article]而不僅僅是@article。

而且,你不必爲每個控制器創建佈局,你可以創建你的佈局文件夾一個application.html.erb並沒有在佈局文件夾中的佈局將使用應用程序的所有控制器。 html.erb並且您不必在控制器中指定它,只需刪除與控制器同名的佈局即可。

+0

的「news.html.erb」文件到我在我的項目中實際上並不存在這種提及;我只是繼續了Rails指南中的示例(請參閱原始消息中的鏈接)。這裏的問題不是爲我的所有觀點創建一個總體佈局;問題是在現有的application.html.erb文件中使用嵌套佈局。如果你看看參考文章,這個想法會更詳細地解釋。 再次,爲了澄清,我有一個application.html.erb與第二個佈局文件嵌套。我想爲多個控制器顯示嵌套佈局的組合。 – tmo256 2009-12-10 17:58:20

0

我甚至不太激動不已的控制器指定佈局模板本身

沒有理由擔心這個。這只是你所做的。這是專門爲此設計的一行DSL代碼。不笨。

class ArticlesController < ActionController::Base 
    layout :news 
end 
+0

同樣,我認爲中心問題正在喪失。我有一個標準的應用程序佈局,正在所有頁面上使用,我有一個輔助佈局,我正在使用它嵌套佈局。我想爲一個特定資源中的所有嵌套資源使用嵌套佈局模板。謝謝! – tmo256 2009-12-11 14:34:15

+0

這就是這樣做... – MattMcKnight 2009-12-12 04:27:17