如何基于'pages / home.html.erb'呈现条件

时间:2015-11-04 20:50:38

标签: ruby-on-rails ruby

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>

2 个答案:

答案 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" %>

这使您能够将代码拆分为更易于管理的块。我们在这里这样做:

{{0}}

答案 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>