How to implement fragment caching with rails ajax call?

I have a view where I have multiple things to load and I make an ajax call from the index view to add the content on success of each call and I would like to cache each of it so as to make the performance better.

index.html.erb

``

test_controller.rb

def sample1

@sample1 = Sample1.paginate(:page => params[:page], :per_page => @per_page)



respond_to do |format|

  format.js

end

end

``

sample1.js.erb

jQuery(‘#show1’).html(‘<%= escape_javascript render “sample1” %>’);

``

_sample1.html.erb

<% @sample1.each do |value| %>

<%= value.name %>

<% end %>

``

I have thousands of name and these values do not change often and I show 100 entries on each page. So, I wanted to cache these and display instead of rendering each time.

Thanks in advance!

You have to use fragment caching

http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html

and write a private method like

def sample_from_cache

@cache = read_fragment(:page => params[:page], :per_page => @per_page)

return @cache unless @cache.blank?

@cache = render_to_string(:partial => “search.html.erb”, :locals => { :sample1 => Sample1.paginate(:page => params[:page], :per_page => @per_page) } )

write_fragment({:page => params[:page], :per_page => @per_page}, @cache)

end

and your action like this

def sample1

@sample1 = sample_from_cache

respond_to do |format|

format.js

end

end

sample.js.erb

jQuery(‘#show1’).html(‘<%= escape_javascript ( @sample1 ) %>’);