If you make the requirement to be always cached or never cached then I see us 
having more options. 

#the partial can worry about how to render itself; keep the main view clean.
<%= render :partial => "job" %>

# _job.html.erb  -- you could optionally wrap this in in a cache block
  <p class="title"><%= job.title %></p>
  <p class="location"><%= job.location %></p>
  <p><%= job_time(job) %></p>
  <p><%= job.published_at %></p>

#job_helper.rb
def job_time(job)
  if job.published_at > 5.days.ago
    distance_of_time_in_words(DateTime.now, job.published_at)
  else
     job.published_at
  end
end

Luke

On 2010-10-20, at 8:37 AM, Colin Law wrote:

> On 20 October 2010 15:49, Luke Cowell <[email protected]> wrote:
>> Hi Colin, can you please explain ?
> 
> In the OPs original post he has two ways of rendering  job.published_at.
> For the case where it is recent
> <%= distance_of_time_in_words(DateTime.now, job.published_at) %>
> and otherwise just
> <%= job.published_at %>
> 
> Colin
> 
>> 
>> Luke
>> 
>> On 2010-10-20, at 12:44 AM, Colin Law wrote:
>> 
>>> On 20 October 2010 03:03, Luke Cowell <[email protected]> wrote:
>>>> How about something like this:
>>>> <% if job.published_at > 5.days.ago %>   #credit to Colin for catching this
>>>>  <%= render :partial => "job" %>
>>>> <% else %>
>>>>  <% cache job %>
>>>>   <%= render :partial => "job" %>
>>>>  <% end %>
>>>> <% end %>
>>>> 
>>>> # _job.html.erb
>>>>   <p class="title"><%= job.title %></p>
>>>>   <p class="location"><%= job.location %></p>
>>>>   <p><%= job.published_at %></p>
>>> 
>>> I think that does not provide the required alternative versions for
>>> display of published_at.
>>> 
>>> Colin
>>> 
>>>> 
>>>> 
>>>> I'd also look at turning the logic on that first line into a method
>>>> 
>>>> def recently_published?
>>>>  job.published_at > 5.days.ago
>>>> end
>>>> 
>>>> Luke
>>>> 
>>>> On 2010-10-19, at 2:00 PM, Greg Ma wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> I want to cache objects only if they were published at least 5 days ago.
>>>>> He is the code I've done, but I don't like because it is not dry...
>>>>> How could I improve it?
>>>>> 
>>>>> <% if job.published_at < 5.days.from_now %>
>>>>>  <p class="title"><%= job.title %></p>
>>>>>  <p class="location"><%= job.location%></p>
>>>>>  <p><%= distance_of_time_in_words(DateTime.now, job.published_at)
>>>>> %></p>
>>>>> <% else %>
>>>>>  <% cache job %>
>>>>>    <p class="title"><%= job.title %></p>
>>>>>    <p class="location"><%= job.location %></p>
>>>>>    <p><%= job.published_at %></p>
>>>>>  <% end %>
>>>>> <% end %>
>>>>> 
>>>>> Greg
>>>>> 
>>>>> --
>>>>> Posted via http://www.ruby-forum.com/.
>>>>> 
>>>>> --
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "Ruby on Rails: Talk" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to 
>>>>> [email protected].
>>>>> For more options, visit this group at 
>>>>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>>>>> 
>>>> 
>>>> --
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Ruby on Rails: Talk" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to 
>>>> [email protected].
>>>> For more options, visit this group at 
>>>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>>>> 
>>>> 
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Ruby on Rails: Talk" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to 
>>> [email protected].
>>> For more options, visit this group at 
>>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>>> 
>> 
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Ruby on Rails: Talk" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>> 
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to