[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Validating form input

Rajat Garg

8/8/2008 4:47:00 AM

[Note: parts of this message were removed to make it a legal post.]

Hi Everybody,

I have a simple form whose input I am trying to validate in the controller.
However, this if clause is not getting called at all... Is this a correct
way to do it?

Please help.


*In Controller (action is getting called and code in else gets executed)->*

begin
if (params[:fltAvailable].blank? || params[:user].blank?
params[:user]["lastname"].blank? || params[:user][:email].blank? ||
params[:user][:firstname].blank? ||
params[:fltAvailable][:from_airport].blank? ||
params[:fltAvailable][:from_time].blank? ||
params[:fltAvailable][:num_seats].blank? ||
params[:fltAvailable][:flight_type].blank? || *
params[:fltAvailable][:mfr_name].blank?*)
raise "error due to ..........."
else
..
.
.
end


*From log file (mfr_name is empty):*

Processing LocalFlightsController#save_flight (for 24.16.111.232 at
2008-08-07 22:01:11) [POST]
Session ID: 59114620aa763d537c7a80d0877163e5
Parameters: {"return_uri"=>"/local_flights/post_your_flight",
"user"=>{"lastName"=>"Garg", "firstName"=>"Rajat", "phone"=>"206-499-9495",
"email"=>"rajat_garg_79@hotmail.com"}, "commit"=>"List your Upcoming
Flight", "action"=>"save_flight", "fltAvailable"=>{"from_airport"=>"HQM",
"num_seats"=>"2", "estimated_flying_time"=>"1:00", "estimated_cost"=>"85 per
hou", "model_name"=>"172", "return_time"=>"Midnight", "description"=>"here
is the flight stuff", *"mfr_name"=>""*, "from_time"=>"11:00 AM",
"return_date"=>"mm/dd/yy", "from_date"=>"2008-08-21", "to_airport"=>"",
"aircraft_id"=>"3318J", "flight_type"=>"Local Tour"},
"controller"=>"local_flights", "fltPictures"=>{"uploaded_data"=>""}}


--
Rajat Garg


Ph: 206-499-9495
Add: 16140 SE EastGate Way APT E-204
Bellevue, WA 98008
Web: http://www.piloto...
-----------------------------------------------------------------------------------------------------
Flying is the second greatest thrill known to man. Landing is the first!

1 Answer

Adam Shelly

8/8/2008 7:10:00 PM

0

On 8/7/08, Rajat Garg <rajat79@gmail.com> wrote:
> Hi Everybody,
>
> I have a simple form whose input I am trying to validate in the controller.
> However, this if clause is not getting called at all... Is this a correct
> way to do it?
>
I don't know exactly what's wrong with your statement, but you are missing
a || on the end of the first line - so the parser treats the newline
like a semicolon,
meaning your first two tests are executed but ignored - they have no
bearing on the result.

In terms of maintainablity/readibility, you may want to reorganize a little.
The following code did raise the expected error for me when I set
'params' to your log data:
required = { :user=>[:lastname, :email],
:fltAvailable=> [:from_airport, :from_time,:mfr_name] }
required.each{|key,subset|
raise "error" if (params[key].blank? || subset.find{|s|
params[key][s].blank?'})
}

-Adam