簡體   English   中英

控制器有多個布局

[英]More than one layout for a controller

是否可以做這樣的事情:

class SimulationController < ApplicationController
  layout "generic", :only => [:login, :invalid]
  layout "menubar", :except => [:login, :invalid]

由於某種原因,我的login頁面仍然使用菜單欄布局(我可以知道,因為菜單欄將顯示在頂部)。 如果我注釋掉第三行,菜單欄將消失。 因此,似乎兩個布局都被一個接一個地應用。

但是,如果我注釋掉layout "generic"位,那么它將是黑白的,這意味着未應用CSS樣式表。

您看起來好像在嘗試在不同的運行時條件下應用不同的布局。 解決此問題的最簡單方法是對布局使用方法參考。

例如: -

class ResourceController < ActionController::Base
  layout :choose_layout

  private
    def choose_layout    
      if [ 'signup', 'login' ].include? action_name
        'login_layout'
      else
        'admin_layout'
      end
    end

在標題“布局類型”下查看ActionController :: Layout的Rails API參考

看看這張票,您的問題似乎很相似:[ http://dev.rubyonrails.org/ticket/8867]

一種方法實際上是在您的行動之內。

def login
  render :action => "login", :layout => "generic"
end

您也可以將實際的“ menubar” html局部化,並在某些條件下關閉渲染。

暫無
暫無

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

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