Nested Rails Views

I'm at the point where I have a lot of view files for each controller in my app. I'd like to be able to add another level or two of directories in my view folders just for organizational purposes. What's the best way to do this?

i.e. app/views/controller/sub_dir/view.html.erb

Raymond O'Connor wrote:

I'm at the point where I have a lot of view files for each controller in my app.

Why do you have so many? It's rare to have more than about 5 views per controller.

I'd like to be able to add another level or two of directories in my view folders just for organizational purposes. What's the best way to do this?

i.e. app/views/controller/sub_dir/view.html.erb

Answer the first question, and perhaps an idea will present itself.

Best,

Marnen Laibow-Koser wrote:

Raymond O'Connor wrote:

I'm at the point where I have a lot of view files for each controller in my app.

Why do you have so many? It's rare to have more than about 5 views per controller.

I'd like to be able to add another level or two of directories in my view folders just for organizational purposes. What's the best way to do this?

i.e. app/views/controller/sub_dir/view.html.erb

Answer the first question, and perhaps an idea will present itself.

Best, -- Marnen Laibow-Koser http://www.marnen.org marnen@marnen.org

I could split the actions into multiple controllers, but then I'd want some sort of organization to group controllers then... Once a project reaches a certain size, actions tend to organize hierarchically at least my project has. Just wondering if there's an easy way to organize all those files hierarchically since their logical group is hierarchical

Raymond O'Connor wrote:

Marnen Laibow-Koser wrote:

Raymond O'Connor wrote:

I'm at the point where I have a lot of view files for each controller in my app.

Why do you have so many? It's rare to have more than about 5 views per controller.

I'd like to be able to add another level or two of directories in my view folders just for organizational purposes. What's the best way to do this?

i.e. app/views/controller/sub_dir/view.html.erb

Answer the first question, and perhaps an idea will present itself.

Best, -- Marnen Laibow-Koser http://www.marnen.org marnen@marnen.org

I could split the actions into multiple controllers,

That's a more common plan. Please give some more detail about how your app is structured, and perhaps we can give more specific help.

but then I'd want some sort of organization to group controllers then...

Rails provides for namespacing controllers.

Once a project reaches a certain size, actions tend to organize hierarchically at least my project has.

Yes. Usually controllers are the first level in the hierarchy.

Just wondering if there's an easy way to organize all those files hierarchically since their logical group is hierarchical

Again: what's your app like? Why do you have so many views per controller? Please give specific answers if you want better help.

Best,

Since you don't have many details posted, I'll suggest a generic solution that worked for me:

Use partials. You can populate them based on sub-categories within your actions or groups or whatever your 'parent' classification is. You can implement whatever heirarchy you like - each level would have a partial, that would then render the child levels as needed. Render using conditionals or a loop, and you can turn three partials into a three-level-deep, nested heirarchy.

Hope that helps. Post details for better assistance.

SR

Thanks for the help so far. Here's a more concrete example of what I'm talking about. I have an app used for warehousing and fulfillment. Some of the controller domains are:

Receiving Locating Items Shipping Out Items Finance Related Stuff Shipment Tracking

Within just the Receiving controller there are dozens of view files because it's become larger and larger over the years. You need to be able to receive a shipment, then receiving individual items in a shipment, track exception cases, edit previous check in data, etc. I'd really like a way to organize some of those files such that I have /receiving/shipment_check_in/..., /receiving/exceptions/...., /receiving/item_check_in/...

All my controllers are getting to this size or are already there. I was just wondering if there was an easy way to refractor and organize projects of these size.

Raymond O'Connor wrote:

Thanks for the help so far. Here's a more concrete example of what I'm talking about. I have an app used for warehousing and fulfillment. Some of the controller domains are:

Receiving Locating Items Shipping Out Items Finance Related Stuff Shipment Tracking

Within just the Receiving controller there are dozens of view files because it's become larger and larger over the years. You need to be able to receive a shipment, then receiving individual items in a shipment, track exception cases, edit previous check in data, etc. I'd really like a way to organize some of those files such that I have /receiving/shipment_check_in/..., /receiving/exceptions/...., /receiving/item_check_in/...

All my controllers are getting to this size or are already there. I was just wondering if there was an easy way to refractor and organize projects of these size.

Your controllers are *far* too big and general. Receiving should not be one controller. You'd probably want a ShipmentsController, an ExceptionCasesController, and so on.

You could probably benefit from redesigning your controllers to follow a RESTful pattern. You needn't adhere slavishly to it, but using REST as a guideline will give you a better idea of what controllers are normally expected to do.

Best,