2014-12-21 69 views
0

嗨我在過去的幾個小時裏一直在擺弄這個,我不確定如何解決,以及做這件事的最佳做法是什麼。Rails - 渲染特定控制器通用的視圖

我有2種類型的內容視圖。一個用於大多數應用程序的單列,另一個用於兩列,我想用於3個特定的控制器。

這是我到目前爲止有:

應用程序/視圖/佈局/ _content.html.erb

<% if current_user&&current_page?(controller: companies) %> 

<div class="bevel-container"> 

    <div class="row"> 

     <div id="left_navbar" class="col-md-2"> 

     </div> 

     <div id="right_content" class="col-md-10"> 
       <p>The 2 column partial is showing</p> 

       <%= yield %> 

     </div> 

    </div> 

</div>< 


<% else %> 

    <div class="container"> 

     <p>The single column partial is showing</p> 
     <%= yield %> 

    </div> 

<% end %> 

這是行不通的。我以爲我可以,如果正在使用即<% if current_user&&current_page?(controller: companies) %>的companies_controller來定義這個觀點,但我不斷收到如下:

錯誤

undefined local variable or method `companies' for #<#<Class:0x00000004c2fe58>:0x00000005194a88> 

在我應用程序/意見/layouts/application.html.erb

<div> <!-- Outer Div --> 

    <%= render 'layouts/top_nav' %> 

    <%= render 'layouts/content' %>  

</div><!-- Close Outer Div --> 

我對如何解決這個問題感到困惑。我試圖創建一個文件app/views/layouts/_companies_html.erb來處理2列內容視圖,但我不知道如何更改我的application.html.erb以便在使用companies_controller時呈現_companies.html.erb - >這意味着我回到了<% if current_user&&current_page?(controller: companies) %> 。在這裏繞圈轉悠。

任何人都可以解釋這個東西的最佳做法,以及我如何去爲公司控制器渲染一個公共佈局,而不是爲其他應用程序的公共佈局?

感謝您尋找

回答

1

我認爲,如果你改變了if到這樣的事情你目前的邏輯將工作:

<% if current_user && controller_name == "companies" %> 

至於最佳實踐,你可以有一個佈局的具體的公司控制器通過將這添加到companies_controller.rb:

layout :companies 
+0

這很好。謝謝@keyzee –