2014-01-18 52 views
0

有沒有辦法將設計用戶路由到不輸出頁眉和頁腳的登錄和註冊屏幕?因爲一切都被順水推舟我application.html.erb設計視圖的自定義

我的繼承人電流application.html.erb

<body> 
    <div id="wrap"> 
    <%= render 'layouts/header' %> 
     <%= yield %> 
    <div id="push"></div> 
    </div> 
<%= render 'layouts/footer' %> 
</body> 

回答

0

不是最漂亮的解決方案代碼,但這是做這件事的方式。

 <body> 
     <div id="wrap"> 
      <%= render 'layouts/header' unless params[:controller] == "devise/sessions" or "devise/registrations" and params[:action] == "new" %> 
      <%= yield %> 
     <div id="push"></div> 
     </div> 
    <%= render 'layouts/footer' unless params[:controller] == "devise/sessions" or "devise/registrations" and params[:action] == "new" %> 
    </body> 

編輯:

application_helper.rb

def hidden_header_footer 
    params[:controller] == "devise/sessions" or "devise/registrations" and params[:action] == "new" 
end 

application.html.erb

<%= render 'layouts/footer' unless hidden_header_footer %> 
<%= render 'layouts/header' unless hidden_header_footer %> 
+0

這一工程:

<body> <div id="wrap"> <% if user_signed_in? %> <%= render 'layouts/header' %> <% end %> <%= yield %> <% if user_signed_in? %> <%= render 'layouts/footer' %> <% end %> </div> </body> 

和你application_controller.rb!謝謝。但我相信這是一個更清潔的方式:/ – samsos

+0

更新了我的答案 – Pierre

+0

如果這對你有用,我將不勝感激,如果你接受我的答案。 – Pierre

1

控制器支持:只和:除了佈局選項,這樣你就可以在控制器中限制訪問權限,如下所示:

class RandomController < ApplicationController 
layout 'application', :except => [:signup, :signin] 

def signin 
// some code 
end 

def signup 
// some code 
end 

end 

我建議您查看渲染視圖的官方RoR網站部分(this link)。

更新2

設在配置/ application.rb中使用回調的佈局設計特定控制器。 (所以這段代碼屬於/config/application.rb文件)

這允許在每個控制器的基礎上指定佈局。如果,例如,你想分配給設計特定的佈局:: HomeController的觀點:

config.to_prepare do 
Devise::HomeController.layout "layout_for_home_controller" 
end 

使用四個不同的佈局,每個控制器一個更深入的例子:

config.to_prepare do 
Devise::HomeController.layout "layout1" 
Devise::UsersController.layout "layout2" 
Devise::ArticlesController.layout "layout3"    
Devise::TutorialsController.layout "layout4"   
end 
+0

randomController? – samsos

+0

以及如果我使用設計? – samsos

+0

看看這個: https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts – Aluxzi

0

如果你使用Devise和標準佈局,它們被渲染成主視圖:<%= yield%>。

所以,你可以在更改application.html.erb:

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    #before_action :authenticate_user!, except: [:index, :home] 
    before_action :authenticate_user! 
end 
相關問題