Задача: на форме пользователь вводит значение, жмет клавишу, результат
сохраняется в базе данных.
Моя реализация:
/views/add_run.html:
[html]
{% extends "../base.html" %}
{% block content %}
Getting: {{ data }}
<form action="/home/run_create" method="post">
<input type="text" name="date" id="date"/>
<input type="text" name="time" id="time"/>
<input type="text" name="distance" id="distance"/>
<input type="submit" name="submit" value="Save"/>
</form>
{% endblock %}
[/html]
home_controller.erl:
handle_request("run_create", [])->
io:format("here~n"),
PostData = ewgi_api:remote_user_data(Env),
% Date = proplists:get_value("date", PostData),
io:format("~p~n", [PostData]),
{redirect, "/"};
Вывод на экран в момент нажатия клавиши Save:
=INFO REPORT==== 21-Aug-2009::15:45:43 ===
Trying file: /home/demas/study/erlang/sport/couch/views/home/add_run.html
here
undefined
=INFO REPORT==== 21-Aug-2009::15:45:46 ===
Trying file: /home/demas/study/erlang/sport/couch/views/home/index.html
То есть, уже PostData оказывается неопределенной. Собственно, как в
home_controller.erl мне добраться до значения, введенных в поля формы?
Posted via RSDN NNTP Server 2.1 beta
Hello, DemAS, you write:
DAS> Задача: на форме пользователь вводит значение, жмет клавишу, результат
DAS> сохраняется в базе данных.
DAS> Моя реализация:
DAS> /views/add_run.html:
DAS> [html]
DAS> {% extends "../base.html" %}
DAS> {% block content %}
DAS> Getting: {{ data }}
DAS> <form action="/home/run_create" method="post">
DAS> <input type="text" name="date" id="date"/>
DAS> <input type="text" name="time" id="time"/>
DAS> <input type="text" name="distance" id="distance"/>
DAS> <input type="submit" name="submit" value="Save"/>
DAS> </form>
DAS> {% endblock %}
DAS> [/html]
DAS> home_controller.erl:
DAS> DAS> handle_request("run_create", [])->
DAS> io:format("here~n"),
DAS> PostData = ewgi_api:remote_user_data(Env),
DAS> % Date = proplists:get_value("date", PostData),
DAS> io:format("~p~n", [PostData]),
DAS> {redirect, "/"};
DAS> Вывод на экран в момент нажатия клавиши Save:
DAS> DAS> =INFO REPORT==== 21-Aug-2009::15:45:43 ===
DAS> Trying file: /home/demas/study/erlang/sport/couch/views/home/add_run.html
DAS> here
DAS> undefined
DAS> =INFO REPORT==== 21-Aug-2009::15:45:46 ===
DAS> Trying file: /home/demas/study/erlang/sport/couch/views/home/index.html
DAS> То есть, уже PostData оказывается неопределенной. Собственно, как в
DAS> home_controller.erl мне добраться до значения, введенных в поля формы?
А никак
Потому что POST-данные при редиректе сохранить невозможно в силу особенностей HTTP. Единственный способ — это перенести все POST-данные в GET-параметры типа
GetData = [Key ++ "=" ++ Value || {Key, Value} <- PostData],
GetDataString = string:join(GetData, "&"),
{redirect, "/?" ++ GetDataString}.
Здравствуйте, Mamut, Вы писали:
M>Hello, DemAS, you write:
DAS>> То есть, уже PostData оказывается неопределенной. Собственно, как в
DAS>> home_controller.erl мне добраться до значения, введенных в поля формы?
M>А никак Потому что POST-данные при редиректе сохранить невозможно в силу особенностей HTTP. Единственный способ — это перенести все POST-данные в GET-параметры типа
M>[cut]
M>
Как вариант — запулить это в сессию, как с ними у бипбипа, кстати?
"Mamut" <9088@users.rsdn.ru> writes:
> А никак Потому что POST-данные при редиректе сохранить невозможно в
> силу особенностей HTTP.
Опа, как же так. Я вот смотрю
beepbeep/example/blog/scr/home_controller.erl:
handle_request("create",[]) ->
PostData = ewgi_api:remote_user_data(Env),
Title = proplists:get_value("post_title",PostData),
Body = proplists:get_value("post_body",PostData),
beepbeep/example/blog/views/home/new.html:
[html]
<form action="/home/create" method="post">Title:<br/>
<input type="text" name="post_title" value="" size="40"/>
<br/>
<textarea name="post_body" value="" rows="10" cols="40"></textarea>
<br/>
<input type="submit" name="submit" value="Save"/> | <a href="/">Cancel</a>
</form>
[/html]
Разве не тоже самое ?
Posted via RSDN NNTP Server 2.1 beta
Hello, DemAS, you write:
DAS> "Mamut" <9088@users.rsdn.ru> writes:
DAS> > А никак Потому что POST-данные при редиректе сохранить невозможно в
DAS> > силу особенностей HTTP.
DAS> Опа, как же так. Я вот смотрю
DAS> beepbeep/example/blog/scr/home_controller.erl:
DAS> DAS> handle_request("create",[]) ->
DAS> PostData = ewgi_api:remote_user_data(Env),
DAS> Title = proplists:get_value("post_title",PostData),
DAS> Body = proplists:get_value("post_body",PostData),
DAS>
DAS> beepbeep/example/blog/views/home/new.html:
DAS> [html]
DAS> <form action="/home/create" method="post">Title:<br/>
DAS> <input type="text" name="post_title" value="" size="40"/>
DAS> <br/>
DAS> <textarea name="post_body" value="" rows="10" cols="40"></textarea>
DAS> <br/>
DAS> <input type="submit" name="submit" value="Save"/> | <a href="/">Cancel</a>
DAS> </form>
DAS> [/html]
DAS> Разве не тоже самое ?
Правидьно, но там нет редиректов. Там прямо в home_controller'е в одном и том же методе происходит обработка
Hello, Курилка, you write:
К> Здравствуйте, Mamut, Вы писали:
К> DAS>> То есть, уже PostData оказывается неопределенной. Собственно, как в
К> DAS>> home_controller.erl мне добраться до значения, введенных в поля формы?
К> M>А никак Потому что POST-данные при редиректе сохранить невозможно в силу особенностей HTTP. Единственный способ — это перенести все POST-данные в GET-параметры типа
К> M>
К> [cut]
К> M>
К> Как вариант — запулить это в сессию, как с ними у бипбипа, кстати?
Можнои в сессию. С сессиями порядок
"Mamut" <9088@users.rsdn.ru> writes:
> DAS> > DAS> handle_request("create",[]) ->
> DAS> PostData = ewgi_api:remote_user_data(Env),
> DAS> Title = proplists:get_value("post_title",PostData),
> DAS> Body = proplists:get_value("post_body",PostData),
> DAS>
> Правидьно, но там нет редиректов. Там прямо в home_controller'е в одном и том же методе происходит обработка
Под редиректом ты имеешь в виду {redirect, "/"}; ?
Его можно убрать — суть от этого не меняется.
handle_request("run_create", [])->
io:format("here~n"),
PostData = ewgi_api:remote_user_data(Env),
io:format("~p~n", [PostData]);
PostData оказывается неинициализтрованным.
Или я чего-то не понимаю?
Posted via RSDN NNTP Server 2.1 beta
Hello, DemAS, you write:
DAS> "Mamut" <9088@users.rsdn.ru> writes:
DAS> > DAS> DAS> > DAS> handle_request("create",[]) ->
DAS> > DAS> PostData = ewgi_api:remote_user_data(Env),
DAS> > DAS> Title = proplists:get_value("post_title",PostData),
DAS> > DAS> Body = proplists:get_value("post_body",PostData),
DAS> > DAS>
DAS> > Правидьно, но там нет редиректов. Там прямо в home_controller'е в одном и том же методе происходит обработка
DAS> Под редиректом ты имеешь в виду {redirect, "/"}; ?
DAS> Его можно убрать — суть от этого не меняется.
DAS> DAS> handle_request("run_create", [])->
DAS> io:format("here~n"),
DAS> PostData = ewgi_api:remote_user_data(Env),
DAS> io:format("~p~n", [PostData]);
DAS>
DAS> PostData оказывается неинициализтрованным.
DAS> Или я чего-то не понимаю?
А, теперь понял
В примере блога парсингом POST'а занималась миддлварь blog_example_parse_post, которая запихивала все в remote_user_data. Буквально вчера я закоммитил добавления от некоего индуса, которые, по идее (не тестировал
) должны позволить добраться до данных через beepbeep_request:parse_post(Env)