Partials and making it DRY

I’m trying to take advantage of partials to display a random
testimonial a few pages and I think my newness is getting in the way
here, I’m hoping someone can offer some assistance.

In my controller I have:

def index
@title = “Testimonials”
@testimonials = Testimonial.find(:all)
end

def random
@testimonials = Testimonial.find(:first, :order => ‘RAND()’)
end

Now I have a partial for random, but how would I get it to call the
random method? The display is similar to the all display of (without
the loop):

<% if @testimonials.blank? -%>

There are currently no testimonials.

<% else -%>

<%= testimonial.comment %>

<%= testimonial.cite -%><% if not testimonial.company.blank? %>, <%= testimonial.company -%><% end -%>
<% end -%>

Lastly as well, being that the full list and the random code is so
similar minus the loop - is there a way I can make this a little more
DRY by having it in the same partial somehow?

Thanks a lot everyone,

Blaine

You can wrap it in a helper in application_helper

def show_random_testimonials
@testimonials = Testimonial.find(:first, :order => ‘RAND()’)
render :partial => ‘shared/testimonials’
end

Then in your rhtml

<%= show_random_testimonials %>

Thanks Meech - but what should the output partial rhtml look like? -
I’m still getting a “undefined local variable or method `testimonial’”
on what I have:

<% if @testimonials.blank? -%>

There are currently no testimonials.

<% else -%>

<%= testimonial.comment %>

<%= testimonial.cite -%><% if not testimonial.company.blank? %>, <%= testimonial.company -%><% end -%>
<% end -%>

Ok I’ve got it… I was confusing the testimonial.comment from the
loop because I was doing a “for testimonial in @testimonials” so I was
referencing the incorrect method in the view. Simple neophyte
mistake.

Thanks,

Tim