您好我在过去几个小时内一直在摆弄这个问题,我不确定如何解决这个问题以及做这件事的最佳做法。
我有两种类型的内容视图。一个用于大多数应用程序的单列,另一个用于两个列,我想用于3个特定控制器。
这是我到目前为止所拥有的:
应用/视图/布局/ _content.html.erb
<% if current_user&¤t_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 %>
这不起作用。如果使用companies_controller,我认为我能够定义此视图,即<% if current_user&¤t_page?(controller: companies) %>
,但我会继续获得以下内容:
错误
undefined local variable or method `companies' for #<#<Class:0x00000004c2fe58>:0x00000005194a88>
在我的 app / views / 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
- &GT;这意味着我回到<% if current_user&¤t_page?(controller: companies) %>
。在这里转转圈子很大。
任何人都可以解释这个问题的最佳实践,以及如何为公司控制器渲染公共布局,而不是应用程序其余部分的公共布局?
感谢您寻找
答案 0 :(得分:1)
如果您将if
更改为类似的内容,我认为您当前的逻辑可行:
<% if current_user && controller_name == "companies" %>
对于最佳实践,您可以通过将其添加到companies_controller.rb来获得特定于公司控制器的布局:
layout :companies