Forum: Ruby on Rails No such file or directory - layouts/application.html.erb

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D3fc5887a2f39f2e0c8989d39ce5e6f9?d=identicon&s=25 Bharat Ruparel (bruparel)
on 2009-03-30 20:43
This is very frustrating.  I am defining a layout  for my
AdminsController class index action which is as follows:

class AdminsController < ApplicationController

  before_filter :signal_child_menu
  #current_tab :admin

  def index
    @child_menu = true
    @search_field = "name"
    @crust_types = CrustType.search(params[:search], params[:page],
@search_field)
    render :template => 'crust_types/index'
  end

end

Note that the above action uses a different controller/index
combination, i.e., CrustTypeController/index in this case.

I am defining a :secondary_nav symbol in application.html.erb layout
template as shown below:

            <div class='secondary-navigation'>
              <%= yield :secondary_nav %>
              <div class="clear"></div>
            </div>

So to define contents for the symbol :secondary_nav, I created a
specific layout template for the admins controller called
admins.html.erb whose contents are shown below:

<% content_for :secondary_nav do %>
  <%= navigation [:crust_types, :toppings] %>
<% end %>
<%= render :file => "layouts/application" %>

I am getting an error when I click on the Admins tab in my primary
navigation menu:

No such file or directory - layouts/application

Extracted source (around line #4):

1: <% content_for :secondary_nav do %>
2:   <%= navigation [:crust_types, :toppings] %>
3: <% end %>
4: <%= render :file => "layouts/application" %>

I do not understand why am I getting this error.  The application is
using Rails 2.1.2, but I have another application which is on Rails
2.1.0 and uses similar technique to render combination layouts without
any problems.

What is it that I am missing here?

Thanks for your help.

Bharat
D93ae163042e0a937941e0ba4d8ed5d7?d=identicon&s=25 Eric (Guest)
on 2009-03-30 20:58
(Received via mailing list)
On Mar 30, 11:43 am, Bharat Ruparel <rails-mailing-l...@andreas-s.net>
wrote:
> What is it that I am missing here?

<%= render :file => "layouts/application" %>

That comports with your error, right? Seems too simple of a solution,
but keep in mind that the application layout will be used
automatically anyway, if there isn't one for the current controller.
D3fc5887a2f39f2e0c8989d39ce5e6f9?d=identicon&s=25 Bharat Ruparel (bruparel)
on 2009-03-30 21:08
Eric wrote:
> On Mar 30, 11:43�am, Bharat Ruparel <rails-mailing-l...@andreas-s.net>
> wrote:
>> What is it that I am missing here?
>
> <%= render :file => "layouts/application" %>
>
> That comports with your error, right? Seems too simple of a solution,
> but keep in mind that the application layout will be used
> automatically anyway, if there isn't one for the current controller.

Hello Eric,
You are seeing something obvious that escapes me, hence the frustration.
This is contained in my admins.html.erb file which in turn is stored in
app/views/layouts directory off the Rails root directory.
application.html.erb is the main layout file in the same directory.  All
I am doing is defining the :secondary_nav symbol using content_for and
then delegating to the default application layout file.  So why is rails
complaining?
Bharat
D3fc5887a2f39f2e0c8989d39ce5e6f9?d=identicon&s=25 Bharat Ruparel (bruparel)
on 2009-03-30 22:34
Got it.  I had to say:

<% content_for :secondary_nav do %>
  <%= navigation [:crust_types, :toppings] %>
<% end %>
<%= render "layouts/application" %>

Note that I deleted the word "file" from the last statement which was:

<%= render file "layouts/application" %>

I have no idea why it works in the other application where I assemble
layouts using dynamic headers and footers using the same technique which
uses render file instead of just render statements.

Another of Rails "hidden" features I suppose?
This topic is locked and can not be replied to.