通常推薦的解決方案是在父佈局文件中的content_for
。但是這會導致必須在每個視圖中指定它,因爲如果內容不在子視圖部分中,默認設置就不會顯示它。例如,如果我有一個我想隱藏在認證頁面中的邊欄,但在其他地方都有,那麼現在我必須在除認證頁面以外的每個視圖文件中指定邊欄的內容。不幹。更加乾淨的方式顯示/隱藏軌道中的部分/模板
這比以前更麻煩,也不幹燥,我可以在佈局中渲染一個側欄,並用它來完成(但沒有選擇它在哪裏或不在哪裏渲染的好處)。
如果您可以以某種方式在佈局模板中指定如果它是會話控制器或設計控制器而調用側欄部分不投標,那將會很好。
有沒有辦法做到這一點?我試過使用
unless devise_controller?
render "layouts/sidebar"
但是,這似乎沒有按預期工作。
以與制定一個例子,我有像這樣
.row
main
.col-sm-9
= yield
- unless devise_controller?
.col-sm-3
== render 'layouts/sidebar'
忽略列的一刻,application.html.slim文件。重點是=yield
呈現正常的模板以及設計模板。所以我不能在一次DRY中風中選擇性地禁用邊欄。我必須在每個視圖文件中放置邊欄呈現調用,但不要將其包含在我的設計視圖中。這並不比在每個非設計視圖文件中使用content_for更好或DRYer。
回到列,我想有12列,而不是9列產生的設計意見。但這只是獎金,而不是主要問題。
你可以有權威性的網頁,你會不會使側邊欄,無特別的佈局? – 2014-10-07 13:32:32
如果你指的是設計視圖文件,我認爲不是。我在application.html文件中有一個'= yield',它呈現了設計視圖模板。所以設計意見受其父母的造型影響。讓我在OP中增加一些代碼。 – ahnbizcad 2014-10-07 13:35:47
你能爲我提供一些具體細節嗎? @Sergio Tulentsev?我不知道它是哪個文件,或者你有什麼樣的設計模式。 – ahnbizcad 2014-10-07 13:41:26