[Rails] params object nil in controller action

Craig White craigwhite at azapple.com
Wed Aug 9 01:00:33 GMT 2006


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



More information about the Rails mailing list