You are right..

changing it to the following throws a nasty syntax error.

<%= Rails.cache.fetch "all_catgory" do %>
<!-- generate html for categories -->
<% end %>

If I do

<% cache(:key => 'all_category') do %>
<!-- generate html for categories -->
<%end%>

The it does work, BUT..somehow the page url is prepended to the cache
key so essentially this fragment which is same across the app, misses
for every new page load.


[DEBUG 17-09-2010 12:06:37] Cached fragment hit: views/localhost/
categories/autos-motorcyles/vote_topics?key=all_category (0.4ms)
[DEBUG 17-09-2010 12:06:37]   Category Load (0.2ms)   SELECT * FROM
`categories` ORDER BY name ASC
[DEBUG 17-09-2010 12:06:37] Cached fragment miss: views/localhost/
categories/autos-motorcyles/vote_topics?key=all_category (0.4ms)
[DEBUG 17-09-2010 12:06:37] Rendered shared/_cat_nav_list (8.9ms)
[DEBUG 17-09-2010 12:06:37] Cached fragment hit: views/localhost/
categories/autos-motorcyles/vote_topics?key=all_cities (0.3ms)
[DEBUG 17-09-2010 12:06:37]   User Load (0.1ms)   SELECT distinct city
FROM `users`
[DEBUG 17-09-2010 12:06:37] Cached fragment miss: views/localhost/
categories/autos-motorcyles/vote_topics?key=all_cities (0.4ms)
[DEBUG 17-09-2010 12:06:37] Rendered shared/_city_nav_list (4.7ms)

Can someone please help!



On Sep 16, 4:07 pm, Frederick Cheung <[email protected]>
wrote:
> On Sep 16, 6:32 pm, badnaam <[email protected]> wrote:
>
>
>
> > I am using memcached.. and have the folllowing in my partial.
>
> > <%CACHE.fetch 'all_categories' do %>
> > <ul>
> > Category.all.each do |c|
> > <li><%= c.name %> </li>
> > end
> > </ul>
> > <%end %>
>
> > When I check in the irb console the "all_categories" key does get
> > populated.
> > So..CACHE.fetch 'all_categories' in irb does output the expected html
> > list.
>
> > But nothing gets outputted in my view.
>
> > I am guessing this is some sort of syntax error, what am I doing wrong?
>
> In the case where the data is already in the cache the block is not
> yielded to, so nothing will be output. You could try changing it to a <
> %= but I'm not sure that mixes well with yielding to a block or the
> case when it is generated fresh data. Why not use cache_fragment ?
>
> Fred

-- 
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