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