在 application.html.erb 的tbody
部分中,如果他在主页上并且只有一个侧边栏,我想要呈现current_user
两个侧边栏其他页面。
<body>
<% if current_user.present? %>
<% if 'pages/home.html.erb' %> # Not Working As a Conditional
<div class="container">
<div class="col-md-3">
<%= render 'layouts/valuations' %>
</div>
<div class="col-md-6">
<% flash.each do |name, msg| %>
<%= content_tag(:div, msg, class: "alert alert-info") %>
<% end %>
<div id="modal-holder"></div>
<%= yield %>
</div>
<div class="col-md-3">
<%= render 'layouts/sidebar' %>
</div>
</div>
<% else %>
<div class="container-fluid">
<div class="container">
<div class="col-md-9">
<% flash.each do |name, msg| %>
<%= content_tag(:div, msg, class: "alert alert-info") %>
<% end %>
<div id="modal-holder"></div>
<%= yield %>
</div>
<div class="col-md-3">
<%= render 'layouts/sidebar' %>
</div>
</div>
</div>
<% end %>
<% else %>
<div class="container">
<% flash.each do |name, msg| %>
<%= content_tag(:div, msg, class: "alert alert-info") %>
<% end %>
</div>
<%= yield %>
<% end %>
</body>
答案 0 :(得分:1)
首先,您正在寻找current_page?
:
<% if current_page?(controller: "pages", action: "home") %>
...
<% end %>
虽然这是非常摇摇晃晃的(如果你改变你的pages
控制器怎么办?)。
您最好做的是beartech
建议的内容,设置一个可以在layout
中ping的变量:
#app/controllers/pages_controller.rb
class PagesController < ApplicationController
def home
@home = true
end
end
#app/views/layouts/application.html.erb
<if @home %>
...
<% end %>
我会将此与partials:
的使用相匹配#app/views/layouts/application.html.erb
<%= render "shared/sidebar" if @home %>
<%= render "shared/flash" %>
这使您能够将代码拆分为更易于管理的块。我们在这里这样做:
答案 1 :(得分:0)
在主页的:index
操作中,您可以设置如下变量:
def index
@home_page = true
...
然后你可以做类似的事情:
<body>
<% if current_user.present? %>
<% if @home_page %>
<div class="container">
<div class="col-md-3">
<%= render 'layouts/valuations' %>
</div>