
Question:
I have the following (heavily simplified) model, that uses will_paginate
class Search < ActiveRecord::Base attr_reader :articles def after_initialize @articles = Article.paginate_by_name name, :page => 1 end end
and the controller code in my show action is
@search = Search.new(params[:search])
This all works fine, but notice i hard coded the page number to 1, problem is passing params[:page] value into the after_initialize method, can anyone suggest an elegant way to do this please?
Thanks
Solution:1
Add a page parameter (or even better an options hash parameter) to the initialize method:
class Search def initialize(search, options = {}) @options = options end def after_initialize @articles = Article.paginate_by_name name, :page => @options[:page] end end
and then in your controller:
@search = Search.new(params[:search], :page => params[:page])
You can even supply default values to the option hash, if you like.
Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
EmoticonEmoticon