Перенаправление с текущей страницы на новую страницу - PullRequest
0 голосов
/ 14 декабря 2011

У меня проблемы с некоторыми Ruby CGI.

У меня есть домашняя страница (index.cgi), которая представляет собой смесь HTML и Ruby, и в ней есть форма входа.

При нажатии на кнопку «Отправить» действие POST отображается на той же странице (index.cgi), и в этот момент я проверяю, чтобы убедиться, что пользователь ввел данные в правильные поля.

У меня есть счетчик, который увеличиваетсяна 1 каждый раз, когда поле остается пустым.Если этот счетчик равен 0, я хочу изменить текущую загруженную страницу на что-то вроде contents.html.

С этим у меня есть:

if ( errorCount > 0 )
  do nothing
else
  ....
end

Что мне нужно положить туда, где у меня есть....?


К сожалению, я не могу использовать какие-либо фреймворки, так как они предназначены для курсовых работ в университете, поэтому приходится использовать базовый Ruby.

Что касается использования метода заголовка CGI #, как выЯ предложил, я пытался использовать это, однако это не работает для меня.

Как уже упоминалось, моя страница - index.cgi.Это сделано из смеси Ruby и HTML, используя операторы here doc.

В верхней части моей кодовой страницы есть строка shebang, за которой следует оператор заголовка HTML.

Iзатем выполните проверку формы CGI, и в рамках этого я попытался сделать что-то вроде: print this.cgi ({'Status' => '302 Moved', 'location' => '{http://localhost:10000/contents.html'})

Все, что происходит, это то, что эта строка печатается в верхней части окна браузера, над моей страницей index.cgi.

Надеюсь, это имеет смысл.

1 Ответ

1 голос
/ 17 декабря 2011

Чтобы перенаправить браузер на другой URL-адрес, необходимо вывести 30-кратный HTTP-ответ, содержащий заголовок Location: /foo/bar. Вы можете сделать это, используя метод CGI#header.

Вместо того, чтобы разобраться с этими деталями, которые вы еще не освоили, я предлагаю вам использовать простой фреймворк как Sinatra или, по крайней мере, написать свой сценарий как Rack -совместимый применение.

Если вам действительно нужно использовать простой класс CGI, взгляните на этот простой пример: https://github.com/tdtds/amazon-auth-proxy/blob/master/amazon-auth-proxy.cgi.

...