Does anyone have experience with will_paginate? I''m trying to use it with acts_as_ferret. routes.rb ... map.search ''/search'', :controller => ''notes'', :action => ''search'' notes.rb ... acts_as_ferret :fields => [ ''body'' ] notes_controller.rb ... def search if params[ :query ] @query = params[ :query ] @notes = Note.find_with_ferret @query, :page => params [ :page ], :per_page => 3 end respond_to do |format| format.html # search.html.erb format.xml { render :xml => @notes } end end notes/index.html.erb ... <% if @notes.length > 1 %> <% form_tag :action => ''search'', :patient_id => @patient.id, :method => ''get'' do %> <%= text_field_tag :query, nil, :size => 20 %> <%= submit_tag "Search" %> <% end %> <% end %> notes/search.html.erb ... <ul> <% @notes.each do |note| %> <li><%= link_to note.body, notes_path( note.id ) %> </li> <% end %> </ul> <%= will_paginate @notes, :params => { :patient_id => @patient.id } %> The pagination list shows fine, but when clicking on a page number, I get the error: You have a nil object when you didn''t expect it! You might have expected an instance of Array. The error occurred while evaluating nil.each Extracted source (around line #8): 5: <em>Searching for <%= @query %>...</em> 6: 7: <ul> 8: <% @notes.each do |note| %> 9: <li><%= link_to note.body, notes_path( note.id ) %> </li> 10: <% end %> 11: </ul> The other, really dumb question I have is that the links generated by notes_path( note.id ) take the form ...notes.32 whereas my show method wants notes/32. How can I get notes_path to correctly format? Many TIA, Craig -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
This looks promising: http://www.mckinneystation.com/2007/08/20/pagination-with-acts_as_taggable_on_steroids-acts_as_ferret-and-will_paginate/ You basically need to wrap the results from find_with_ferret in a WillPaginate collection so that the will_paginate helper knows what to do with it. This is ordinarily accomplished with the "paginate" method when using ordinary finds, which find_with_ferret is not, unfortunately. By the way, Sphinx is generally considered better than Ferret for search, and automatically returns will_paginate collections... If notes is a rest resource, you might want to try note_path(note) instead of notes_path. On Jan 21, 4:04 pm, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Does anyone have experience with will_paginate? > > I''m trying to use it with acts_as_ferret. > > routes.rb > ... > map.search ''/search'', :controller => ''notes'', :action => ''search'' > > notes.rb > ... > acts_as_ferret :fields => [ ''body'' ] > > notes_controller.rb > ... > def search > if params[ :query ] > @query = params[ :query ] > @notes = Note.find_with_ferret @query, :page => params > [ :page ], :per_page => 3 > end > > respond_to do |format| > format.html # search.html.erb > format.xml { render :xml => @notes } > end > end > > notes/index.html.erb > ... > <% if @notes.length > 1 %> > <% form_tag :action => ''search'', :patient_id => @patient.id, :method > => ''get'' do %> > <%= text_field_tag :query, nil, :size => 20 %> > <%= submit_tag "Search" %> > <% end %> > <% end %> > > notes/search.html.erb > ... > <ul> > <% @notes.each do |note| %> > <li><%= link_to note.body, notes_path( note.id ) %> </li> > <% end %> > </ul> > <%= will_paginate @notes, :params => { :patient_id => @patient.id } %> > > The pagination list shows fine, but when clicking on a page number, I > get the error: > > You have a nil object when you didn''t expect it! > You might have expected an instance of Array. > The error occurred while evaluating nil.each > > Extracted source (around line #8): > > 5: <em>Searching for <%= @query %>...</em> > 6: > 7: <ul> > 8: <% @notes.each do |note| %> > 9: <li><%= link_to note.body, notes_path( note.id ) %> </li> > 10: <% end %> > 11: </ul> > > The other, really dumb question I have is that the links generated by > notes_path( note.id ) take the form ...notes.32 whereas my show method > wants notes/32. How can I get notes_path to correctly format? > > Many TIA, > Craig-- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks, David. I ran across that link in my searches today, but the "UPDATE (6/6/08): This is out of date for the latest Rails and will_paginate" threw me off a little. I''ll give Sphinx a try--I''m certainly not married to act_as_ferret. Craig On Jan 21, 3:21 pm, David <furb...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> This looks promising:http://www.mckinneystation.com/2007/08/20/pagination-with-acts_as_tag... >...> > By the way, Sphinx is generally considered better than Ferret for > search, and automatically returns will_paginate collections... >-- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.