Avoiding Clutter in views

Hi,

I have seen that when using rails for big applications especially the ones with a lot of dynamic content. for example: profile pages in social network apps, newspaper websites etc.

The Views in such rails apps seem to have a lot of clutter, lots of render statements, ‘if’ statements etc.etc. Is there a way to avoid it or cleaner way to do it.

Thanks, Rishav

Hi Rishav,

The cleanest way is to try and move as much logic into the models and controllers( depending on the context) and then moving a lot of the repetitive view logic into partials.

There is an excellent video on this on RailsCasts

Hope this helps.

Rob

Don't forget about helpers. Helpers that take blocks are especially useful, it's a really easy way to conditionally display some content without cluttering the view.

# Helper def is_authorized(action, resource, &block)   yield if current_user.permission_check(action, resource) end

# View <% is_authorized(:edit, @user) do %>   <%= link_to "Edit", edit_user_path(@user) %> <% end %>

What are the performance impacts of these various techniques?

Has anyone managed or reduced complexity using layouts in any particularly clever ways?

al

Hi guys,

Thanks for the replies. I have tried a bunch of the things mentioned above but still even with the partials and moving code to the helpers,I dont like the result. May be I haven't done things right. But humor me for a thought I had when thinking about the solution.. I have simple profile page filled up with content from different models and the page is full of "render" statements. Is there a more CMS type solution here.

Like for example in Drupal,(aside from the fact its a little inflexible) , manages views in a very clean and decoupled manner from the actual application. It delegates the page content to php variables Like "side-bar" "content" "footer" which acts like a base theme and then you can have separate sub themes managing individual components. The sub themes are combined and put in place in the base theme to render the final output without (atleast most of the time) the user telling Drupal.

Can anyone recommend any good Rails / Ruby based CMS?

Thanks Rishav

Rishav,

You should check out Radiant CMS. It's Rails-based and has the same type of content parts to the pages that you're describing from Drupal.

~Thadd

I'll check it out

Thanks Rishav