Daya Sharma
2006-Aug-12 00:24 UTC
[Rails] params object NULL/nil in controller - is this a bug?
Hi All I am trying to implement a functionality where a user clicks on "Back to Search Results" link he is taken to the back to search result screen. For this I am storing his search criteria (params object) in session. Below is my code, for the first time when the user performs a search, there is no result data in session so the execution enters first if...... see below ______________________________________________________________________________________________________________ def search logger.debug("params.nil?=#{params.nil?}") # this prints ''params.nil?=false '' <=== params is NOT nil at this point if session[:incidentSearch].nil? or session[:incidentSearch].empty? params.each{|k,v| logger.debug("key: #{k}, value: #{v}")} #this prints the key value pairs perfectly logger.debug("params=#{params.to_s}") # this prints ''params.nil?=false'' <=== params is NOT nil at this point # s=params.dup # params=s # logger.debug("params=#{s.to_s}") if params[:routeNum].nil? or params[:routeNum].empty? <=== params is NOT nil at this point flash[:warning] = "Don''t try stupid things....Enter some search criteria." redirect_to :back and return elsif !params[:routeNum ].empty? and one more condition flash[:warning] = "Specify only one search criteria Reference# or Route or Date (Start and End both)" redirect_to :back and return end params. each{|k,v| logger.debug("key: #{k}, value: #{v}")} elsif !session[:incidentSearch].nil? and !session[:incidentSearch].empty? # control never reaches here for the first time the search is done logger.debug("======> Somebody was here.......") # <== control never reaches here for the first time the search is done params = session[:incidentSearch] # <== control never reaches here, if I comment it every thing works fine i.e. params is never nil puts "***^*&^&^*(^%%^%&^$%$%$&%$&$&^$&^ Somebody was here......." # <== control never reaches here and nothing is printed end logger.debug( "params.nil?=#{params.nil?}") # this prints ''params.nil?=true '' <=== params is NIL at this point. #proceed with search........ ______________________________________________________________________________________________________________ This is a single user development environment. So only one request comes in for a search..... and the params is nil before I can even proceed with search. Can somebody please help me understand where and why is params being set to nil??? Oh and if I do the following in my first if s=params.dup params=s everything works fine -daya -- Posted via http://www.ruby-forum.com/.