Passing POST params from one rhtml to another

B

Belorion

------=_Part_9653_21542959.1139504618374
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Greetings everyone. I am faced with a rather tricky problem. I have
mod_ruby/eRuby going on Apache, and have the following situation:

I have an outer rhtml file which, using the open-uri library, opens up a
remote rhtml file from one of my other servers to dump the contents inside
the outer rhtml. In other words, I have 1 rhtml wrapping another one from
my other remote site.

Unfortunately, I also need to pass POST data from a form to the inner
rhtml. So, the outer rhtml recieves the POST data and can be used using
CGI.new, but I don't know how to pass the same post data to the inner rhtml
file. I was doing this previously by simply doing some URL rewriting
(?blah=3D1&foo=3D2, etc), but that doesn't work anymore because one of the =
form
field values contains lots of spaces and other erroneous characters that
make Apache barf:

request failed: erroneous characters after protocol string:

Does anyone know of anyway to POST the data to the inner rhtml file instead
of passing it along inside the URL? Unfortunately, directly invoking ERB
will not work as the file is not locally available (hence the loading up vi=
a
open-uri). I've also tried executing url_encode from the ERB library to
encode the URL into readable form, but the CGI barfs on my inner rhtml
because instead of CGI.params looking like this:

{ "foo"=3D>1} it looks like this {"foo=3D1"=3D>nil }

(the encoded form of the URL: url_encode( "?foo=3D1") gives "foo%3d1")

Any suggestions? Thanks.

Matt

p.s. Y

------=_Part_9653_21542959.1139504618374--
 
J

James Britt

Belorion said:
Greetings everyone. I am faced with a rather tricky problem. I have
mod_ruby/eRuby going on Apache, and have the following situation:

I have an outer rhtml file which, using the open-uri library, opens up a
remote rhtml file from one of my other servers to dump the contents inside
the outer rhtml. In other words, I have 1 rhtml wrapping another one from
my other remote site.

Unfortunately, I also need to pass POST data from a form to the inner
rhtml. So, the outer rhtml recieves the POST data and can be used using
CGI.new, but I don't know how to pass the same post data to the inner rhtml
file.


Can you use open-uri to send an HTTP POST request?

(from: http://www.ruby-doc.org/stdlib/libdoc/open-uri/rdoc/)

open("http://www.ruby-lang.org/en/",
"User-Agent" => "Ruby/#{RUBY_VERSION}",
"From" => "(e-mail address removed)",
"Referer" => "http://www.ruby-lang.org/") {|f|
...
}

Could the headers hold the post metadata?

"Content-Length" => some_base64_encoded_stuff.size
"Content-Type" => "application/x-www-form-urlencoded"

I believe the some_base64_encoded_stuff part has to go in the body of
the request, though. I don't know if open-uri provides for that.


If not, then use a library than can do a POST, such as net/http.

--
James Britt

"A language that doesn't affect the way you think about programming is
not worth knowing."
- A. Perlis
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,740
Latest member
JudsonFrie

Latest Threads

Top