Hi All I am trying to implement a Back to Search Results functionality, by storing the user''s search criteria (params) in session and then reusing those params instead of request params when user clicks on "Back to Search Results link". here is my code ________________________________________________________________________ def search if session[:incidentSearch].nil? or session[:incidentSearch].empty? # if no search criteria found in session logger.debug("if params.nil?=#{params.nil?}") logger.debug("NOT FOUND :incidentSearch") if (params[:routeNum].nil? or params[:routeNum].empty?) and (params[:incidentId].nil? or params[:incidentId].empty?) and (params[:startDateTime].nil? or params[:startDateTime].empty?) and (params[:endDateTime].nil? or params[:endDateTime].empty?) flash[:warning] = "Don''t try stupid things....Enter some search criteria." redirect_to :back and return elsif ((!params[:routeNum].empty? or !params[:incidentId].empty?) and (!params[:startDateTime].empty? and !params[:endDateTime].empty?) or (!params[:routeNum].empty? and !params[:incidentId].empty?)) flash[:warning] = "Specify only one search criteria Reference# or Route or Date (Start and End both)" redirect_to :back and return end elsif !session[:incidentSearch].nil? and !session[:incidentSearch].empty? # if search criteria found in session puts "elsif params.nil?=#{params.nil?}" logger.debug("elsif params.nil?=#{params.nil?}") logger.debug("session[:incidentSearch] found .......") params = session[:incidentSearch] end logger.debug("final params.nil?=#{params.nil?}") # *print true* condition = nil if params[:routeNum] and !params[:routeNum].empty? # *<=== params is nil by now** * condition = ["(route_num = ?)", params[:routeNum].strip] end #proceed with find operation in model and render results ________________________________________________________________________ here is my logger output when I search for the first time if params.nil?=false NOT FOUND :incidentSearch final params.nil?=true ________________________________________________________________________ The funny thing is for first search the control never reaches elsif which means session[:incidentSearch] was nil so where is params being set to nil Please help me understand why is params nil thanks in advance -daya -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060808/daaa5407/attachment-0001.html
Hey, just scanning your code, there''s a red flag.... see below: On 8-Aug-06, at 11:35 AM, linux user wrote:> Hi All > > I am trying to implement a Back to Search Results functionality, by > storing the user''s search criteria (params) in session and then > reusing those params instead of request params when user clicks on > "Back to Search Results link". here is my code > > ______________________________________________________________________ > __ > def search > if session[:incidentSearch].nil? or session > [:incidentSearch].empty? # if no search criteria found in session > logger.debug("if params.nil?=#{params.nil?}") > logger.debug("NOT FOUND :incidentSearch") > if (params[:routeNum].nil? or params[:routeNum].empty?) and > (params[:incidentId].nil? or params[:incidentId].empty?) and > (params[:startDateTime].nil? or params > [:startDateTime].empty?) and > (params[:endDateTime].nil? or params[:endDateTime].empty?) > flash[:warning] = "Don''t try stupid things....Enter some > search criteria." > redirect_to :back and return > elsif ((!params[:routeNum].empty? or !params > [:incidentId].empty?) and (!params[:startDateTime].empty? and ! > params[:endDateTime].empty?) or > (!params[:routeNum].empty? and !params > [:incidentId].empty?)) > flash[:warning] = "Specify only one search criteria > Reference# or Route or Date (Start and End both)" > redirect_to :back and return > end > > elsif !session[:incidentSearch].nil? and !session > [:incidentSearch].empty? # if search criteria found in session > puts "elsif params.nil?=#{params.nil?}" > logger.debug("elsif params.nil?=#{params.nil?}") > logger.debug("session[:incidentSearch] found .......") > params = session[:incidentSearch]hmmm.... what are you doing in the line above? seems to me your obliterating params with the value of session[:incidentSearch] Regards, Trevor -- Trevor Squires http://somethinglearned.com> end > > logger.debug("final params.nil?=#{params.nil?}") # print true > condition = nil > if params[:routeNum] and !params[:routeNum].empty? # <=== > params is nil by now > condition = ["(route_num = ?)", params[:routeNum].strip] > end > #proceed with find operation in model and render results > ______________________________________________________________________ > __ > > here is my logger output when I search for the first time > > if params.nil?=false > NOT FOUND :incidentSearch > final params.nil?=true > ______________________________________________________________________ > __ > > The funny thing is for first search the control never reaches elsif > which means session[:incidentSearch] was nil so where is params > being set to nil > > Please help me understand why is params nil > > thanks in advance > -daya > > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060808/3bd28c65/attachment-0001.html
On Tue, 2006-08-08 at 13:35 -0500, linux user wrote:> Hi All > > I am trying to implement a Back to Search Results functionality, by > storing the user''s search criteria (params) in session and then > reusing those params instead of request params when user clicks on > "Back to Search Results link". here is my code > > ________________________________________________________________________ > def search > if session[:incidentSearch].nil? or > session[:incidentSearch].empty? > # if no search criteria found in session > logger.debug("if params.nil?=#{params.nil?}") > logger.debug("NOT FOUND :incidentSearch") > if (params[:routeNum].nil? or params[:routeNum].empty?) and > (params[:incidentId].nil? or params[:incidentId].empty?) > and > (params[:startDateTime].nil? or > params[:startDateTime].empty?) and > (params[:endDateTime].nil? or params[:endDateTime].empty?) > flash[:warning] = "Don''t try stupid things....Enter some > search criteria." > redirect_to :back and return > elsif ((!params[:routeNum].empty? or ! > params[:incidentId].empty?) and (!params[:startDateTime].empty? and ! > params[:endDateTime].empty?) or > (!params[:routeNum].empty? and ! > params[:incidentId].empty?)) > flash[:warning] = "Specify only one search criteria Reference# > or Route or Date (Start and End both)" > redirect_to :back and return > end > > elsif !session[:incidentSearch].nil? and ! > session[:incidentSearch].empty? # if search criteria found in session > puts "elsif params.nil?=#{params.nil?}" > logger.debug("elsif params.nil?=#{params.nil?}") > logger.debug("session[:incidentSearch] found .......") > params = session[:incidentSearch] > end > > logger.debug("final params.nil?=#{params.nil?}") # print true > condition = nil > if params[:routeNum] and !params[:routeNum].empty? # <=== params > is nil by now > condition = ["(route_num = ?)", params[:routeNum].strip] > end > #proceed with find operation in model and render results > ________________________________________________________________________ > > here is my logger output when I search for the first time > > if params.nil?=false > NOT FOUND :incidentSearch > final params.nil?=true > ________________________________________________________________________ > > The funny thing is for first search the control never reaches elsif > which means session[:incidentSearch] was nil so where is params being > set to nil > > Please help me understand why is params nil > > thanks in advance---- on this error screen...there should be a link to the session variables so you can see their values directly by clicking the link. Craig
On 8/8/06, Trevor Squires <trevor@protocool.com> wrote:> > Hey, > just scanning your code, there''s a red flag.... see below: > > On 8-Aug-06, at 11:35 AM, linux user wrote: > > Hi All > > I am trying to implement a Back to Search Results functionality, by > storing the user''s search criteria (params) in session and then reusing > those params instead of request params when user clicks on "Back to Search > Results link". here is my code > > ________________________________________________________________________ > def search > if session[:incidentSearch].nil? or session[:incidentSearch].empty? > # if no search criteria found in session > logger.debug("if params.nil?=#{params.nil?}") > logger.debug("NOT FOUND :incidentSearch") > if (params[:routeNum].nil? or params[:routeNum].empty?) and > (params[:incidentId].nil? or params[:incidentId].empty?) and > (params[:startDateTime].nil? or params[:startDateTime].empty?) > and > (params[:endDateTime].nil? or params[:endDateTime].empty?) > flash[:warning] = "Don''t try stupid things....Enter some search > criteria." > redirect_to :back and return > elsif ((!params[:routeNum].empty? or !params[:incidentId].empty?) > and (!params[:startDateTime].empty? and !params[:endDateTime].empty?) or > (!params[:routeNum].empty? and !params[:incidentId].empty?)) > flash[:warning] = "Specify only one search criteria Reference# or > Route or Date (Start and End both)" > redirect_to :back and return > end > > elsif !session[:incidentSearch].nil? and !session[:incidentSearch].empty? > # if search criteria found in session > puts "elsif params.nil?=#{params.nil?}" > logger.debug("elsif params.nil?=#{params.nil?}") > logger.debug("session[:incidentSearch] found .......") > params = session[:incidentSearch] > > > > hmmm.... what are you doing in the line above? seems to me your > obliterating params with the value of session[:incidentSearch] > > Regards, > Trevor > -- > Trevor Squires > http://somethinglearned.com >You are right Trevor it is obliterating params with value of session[:incidentSearch] and thats what I want to do, because somewhere below this code when the session[:incidentSearch] is nil I am storing the params in session[:incidentSearch]. So next time around I want to use the params stored in the session[:incidentSearch] when the user clicks on a link called "Back to Search Results". The question is that for the very first time when the session[:incidentSearch] is nil, the code params = session[:incidentSearch] should never be executed. so there is no chance the params should be nil. But immideately right outside the if-end block my params are nil, even the line which obliterates params never got executed. So why is params nil. -daya end> > logger.debug("final params.nil?=#{params.nil?}") # *print true* > condition = nil > if params[:routeNum] and !params[:routeNum].empty? # *<=== params is > nil by now *** > condition = ["(route_num = ?)", params[:routeNum].strip] > end > #proceed with find operation in model and render results > ________________________________________________________________________ > > here is my logger output when I search for the first time > > if params.nil?=false > NOT FOUND :incidentSearch > final params.nil?=true > ________________________________________________________________________ > > The funny thing is for first search the control never reaches elsif which > means session[:incidentSearch] was nil so where is params being set to nil > > Please help me understand why is params nil > > thanks in advance > -daya > > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060809/f79c57fb/attachment.html