如何使用嵌套控制器的默认布局?

时间:2012-07-20 17:29:04

标签: ruby-on-rails

对rails很新,我正在构建我的路由以获得这样的嵌套控制器:

resources :companies do
  member do
    get 'operating_hour'
  end
  resources :services do
    member do
      get 'services'
    end
  end
end

现在,我的应用程序布局是这样的:

<body>
<%= render 'layouts/header' %>
<div class="container">
  <% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>

  <% if main_side_view? %>
      <%= render 'layouts/main_side' %>
  <% elsif company_side_view %>
      <%= render 'layouts/company_side' %>
  <% else %>
      <h1><%= yield(:title) %></h1>
      <%= yield %>
  <% end %>

  <%= render 'layouts/footer' %>
</div>

除了嵌套('service')控制器生成的所有内容之外,所有内容都正常。当我转到嵌套控制器的链接时,我的布局不存在!

任何帮助?

1 个答案:

答案 0 :(得分:2)

我认为你是以错误的方式做到的。您应该创建几个布局:

首先,layouts / application.html.erb

<%= render 'layouts/header' %>
<div class="container">
  <% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>

   <h1><%= yield(:title) %></h1>
   <%= yield %>

  <%= render 'layouts/footer' %>
</div>

其次,layouts / companies.html.erb

<%= render 'layouts/header' %>
<div class="container">
  <% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
  Your code for companies
</div>

请参阅指南:http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts

您可以为Flash消息创建共享视图。