Forum: Ruby on Rails Which architecture to choose for a common website

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.
995cafe9db44c70e51175885e897a617?d=identicon&s=25 Matthieu (Guest)
on 2007-01-22 23:47
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 :/

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
2f9a03aa0fcfe945229cb6126eda2cb2?d=identicon&s=25 Philip Hallstrom (Guest)
on 2007-01-23 00:06
(Received via mailing list)
> 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:
<html>
   my default view...
   <%= yield "layout" %>
   ...
</html>
E6a1fe85299e663566dd1ea7d4f74e76?d=identicon&s=25 Max Muermann (Guest)
on 2007-01-23 01:26
(Received via mailing list)
On 1/23/07, Matthieu <rails-mailing-list@andreas-s.net> 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
995cafe9db44c70e51175885e897a617?d=identicon&s=25 Matthieu (Guest)
on 2007-01-23 21:02
Thank you for both your answers! I see it clearlier now!

I get back to work then!
This topic is locked and can not be replied to.