Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6469493
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T05:59:51+00:00 2026-05-25T05:59:51+00:00

I am trying to cache a partial which is rendered in a layout. This

  • 0

I am trying to cache a partial which is rendered in a layout. This partial is computationally expensive so I only want to compute it once. It is not controller specific so the usual fragment caching doesn’t seem to apply. I decided to use Rails.cache.fetch(‘menu’) for the caching instead. Here is what the contents of the partial look like.

<% Rails.cache.fetch('menu') do %>
  Partial code...
<% end %>

But when I do this it renders the partial twice. For some reason it stopped doing this in my development environment so I decided to try and deploy it. I am not so lucky with my production environment. The partial itself generates a menu that includes links to a lot of the records in the site to help improve navigation.

I originally tried putting the cache statement in the layout file but then it was rendering the layout twice.

I recently added a jQuery hack to remove the duplicate html so that it kinda “works” for now, but I would rather get it working properly. I don’t want to go to the trouble of installing some complicated caching system such as Redis, that requires me to run another server program. That would be overkill for the task. There must be something in rails that is well suited to caching parts of layouts.

Should I try something completely different or is this a bug in rails? If it is a bug then is there a workaround I can use?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T05:59:51+00:00Added an answer on May 25, 2026 at 5:59 am

    I figured it out. Instead of caching the partial in the view, I created a helper method that returns the rendered partial.

    #Returns a menu for the application layout
    def menu
      Rails.cache.fetch('menu') { render :partial => 'all/menu' }
    end
    

    Then all I needed in the layout is this line
    <% menu %>

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to cache a price value using HttpRuntime.Cache.Insert(), but only appears to hold
I'm trying to create a cache in a webservice. For this I've created a
in my application i trying to implement the cache (ouput) but it is not
I'm trying to create a jboss-cache for data that is only relevant for a
I'm trying to cache the user timeline of a Twitter feed using Zend_Service_Twitter which
I am trying to cache images which have been generated. You create a image
I'm trying to cache user controls and on some pages i want to cache
I`m trying to add cache headers on my static files (.css, .js), but only
I am trying to cache the results of a query which won't change very
I'm trying to cache some application data that only needs to be instantiated when

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.