How to verify cgi.params values?

Hi I am running Ruby as CGI and have a form that returns a simple
string.
The porblem I am having is that if nothing is entered in the form the
use of
.empty does not work. There must be a carriage return or a space left
behind
that empty picks up. How do I get remove this?

I have tried

profession = cgi.params[‘profession’].strip

but only get a CGI 500 error.

Welcome to eruby Test

eRuby test

<% # Require the CGI library require 'cgi'

New CGI object

cgi = CGI.new

prepare trap for form variables

username = cgi.params[‘username’]
profession = cgi.params[‘profession’]
%>

  <form method="post">
    Please enter your username: <input type="text" 

name=“username”>

Please enter your profession:


<% if username.empty? # Print out the form asking for the username 

%>

Please test my first eRuby application by entering your name in
the
text box.


<% else %>
Thanks, <%= username %>!

<% if profession.empty? %>

So you are unemployed? Don’t worry learn eRuby and you
will
have a job in no time.


<% else %>
<%= profession %> sounds like a fun profession.
<% end %>
<% end %>

Figured it out by trial and error. I was trying to strip an object so I
datatyped it to a string and then used strip

username = cgi.params[‘username’].to_s.strip
profession = cgi.params[‘profession’].to_s.strip

This works unless there is something else I should use?
Coming from PHP so this is not easy.

tesla wrote:

Figured it out by trial and error. I was trying to strip an object so I
datatyped it to a string and then used strip

username = cgi.params[‘username’].to_s.strip
profession = cgi.params[‘profession’].to_s.strip

This works unless there is something else I should use?
Coming from PHP so this is not easy.

Yes, use:

username = cgi[‘username’].strip
profession = cgi[‘profession’].strip

This will return what you are wanting. Using CGI#params[] returns an
Array for each parameter (in case it has multiple values). CGI#[]
returns just a single value (the first in the array), which is what you
want.

It was useful for me to use:

p username
p profession

to see what was going on. Then read the documentation:

http://ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI/QueryExtension.html

Hope that helps.

-Justin

tesla wrote:

Figured it out by trial and error. I was trying to strip an object so I
datatyped it to a string and then used strip

username = cgi.params[‘username’].to_s.strip
profession = cgi.params[‘profession’].to_s.strip

This works unless there is something else I should use?
Coming from PHP so this is not easy.

Yes, use:

username = cgi[‘username’].strip
profession = cgi[‘profession’].strip

This will return what you are wanting. Using CGI#params[] returns an
Array for each parameter (in case it has multiple values). CGI#[]
returns just a single value (the first in the array), which is what you
want.

It was useful for me to use:

p username
p profession

to see what was going on. Then read the documentation:

http://ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI/QueryExtension.html

Hope that helps.

-Justin

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs