Which architecture to choose for a common website


#1

Hello!

I’ve just started using ruby on rails, and I’d like for a first try
create a simple website.

But I can’t figure out how to organise it from the RoR point of view.

Here is my problem:

I’d like to set up a website with a two level menu, so there will be
different groups of menu elements.

Do I have to create one controller for each group? Each page would be
then represented by one method.

In that case then, how can I do to have one common layout for all the
controllers?

I got the fact that I shouldn’t repeat myself, but I think I read there
is one layout for each controller. Then, if I want one global layout for
the whole website, I would need to repeat the layout for each
controller.

I hope I made myself clear with my problem :confused:

If I’m completely wrong, please tell me! I feel RoR is really powerful,
and I’d like to know how to deal with it!

Thank you by advance!

Best regards,

Matthieu


#2

Do I have to create one controller for each group? Each page would be
then represented by one method.

You don’t have to, but it might be easier…

In that case then, how can I do to have one common layout for all the
controllers?

app/controllers/application.rb:
class ApplicationController < ActionController::Base
layout ‘default’
end

app/controllers/about_controller.rb
class AboutController < ApplicationController
def index
end

def contact
end


end

app/controllers/product_controller.rb
class ProductController < ApplicationController
def index
end

def product
end


end

app/views/layouts/default.rhtml:

my default view... <%= yield "layout" %> ...

#3

On 1/23/07, Matthieu removed_email_address@domain.invalid wrote:

I’d like to set up a website with a two level menu, so there will be
different groups of menu elements.

Do I have to create one controller for each group? Each page would be
then represented by one method.

That’s not a bad way of organising things. Conceptually, one
controller should be responsible for a closely related set of
operations.

In that case then, how can I do to have one common layout for all the
controllers?

in views/layouts, remove all the individual controller layouts and
create an application.rhtml layout, which will be used as the default.
Scaffolding will generate a layout for a new controller, so make sure
you remove that if you don’t want it.

–max


#4

Thank you for both your answers! I see it clearlier now!

I get back to work then!