2010-01-20 60 views
16

我的應用程序/視圖/佈局文件看起來是這樣的:爲某些操作設置佈局?

application.html.erb 
user_sessions.html.erb 
errors.html.erb 

這些做工精細和我有他們,但ID沒有問題,現在想添加一個新的佈局技巧,但是隻在指數顯示行動。

「tips.index.html.erb」會起作用嗎?

回答

32

添加一個新的佈局,只要你喜歡被稱爲「tips.html.erb」

在提示控制器添加以下內容:

layout "tips", :only => [ :index, :show ] 

您可以使用特定的動作指定佈局:

def new 
    render(:layout => "layouts/application") 
end 

我從來沒有嘗試過在控制器中使用多個佈局聲明。這可能是添加另一

layout "standard", :only => [ :new, :edit ] 

可能工作...

+0

使用新建/編輯使用沒有佈局文件。 – Arcath

+0

我已經更新了我的答案 - 希望工程! – dtt101

+0

值得一提的是,您不能在 控制器中多次調用'layout',因爲只有最後一次調用將被評估。相反(至少在rails 4中至少爲 ),你可以調用'layout'傳遞一個方法的符號。然後該方法可以動態地返回不同的模板名稱 。請參閱 [layout](http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout)。 –

4

如果你想在控制器中使用多個佈局,使用下面的代碼:(ACTION_NAME是一個預先定義的變量,你可以使用直接在Rails)的

class OrdersController < BaseController 
    layout :determine_layout 

private 
    def determine_layout 
    %w(new).include?(action_name) ? "some_layout" : "public" 
    end 
end 

見:https://stackoverflow.com/a/5525014/445908