Подскажите, какой из следующих потоков эффективен?
поток 1: Happy Flow: form_page ----- (отправка формы) ------> post_action ---------- (успех) ------------> redirect_to_success_page
Поток ошибок: form_page ----- (отправка формы) ------> post_action ---------- (ошибка) ------------> редирект с параметрами на form_page Примечание: в этом потоке конечный пользователь увидит параметры в URL-адресе, кроме пароля (но это выглядит уродливоя).
Так что я изменил поток с перенаправления страницы на страницу визуализации.Я создал динамический класс в модели, который будет действовать как объект активной записи (это не подкласс для активной записи).После модификации я смогу видеть значения полей в форме, но не в параметрах URL.Таким образом, поток будет выглядеть следующим образом:
Happy Flow: form_page ----- (отправка формы) ------> post_action ---------- (успех) -----------> redirect_to_success_page
Поток ошибок: form_page ----- (отправка формы) ------> post_action ---------- (ошибка) ------------> render form_page (view))
Примечание. В этом потоке конечный пользователь не увидит параметры в URL.Но он увидит другой URL вместо URL-адреса form_url, т.е. мы увидим «post_action» в URL-адресе, потому что мы просто отображаем представление form_page в действии post_action.Прямо сейчас, когда вы обновляете страницу, я сбрасываю значения в объекте (но это можно изменить, если мы хотим, чтобы объект постоянно работал)
Помимо этой информации, если вы хотите код, я вставлю сюда.
controller.rb
-------------
def form_page
@something = SomeName.new({:one=>'', :two => ''})
end
def post_action
@something = SomeName.new(params[:some_variable])
if success
redirect_to success_url
else
render :action => form_page
end
end
model.rb
--------
class SomeName
def initialize(hash)
hash.each do |k,v|
self.instance_variable_set("@#{k}", v)
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
end
end
end
view:
-----
<% form_for :something, :url => {:action => 'post_action'} do |f| %>
<%= f.text_field :one %>
<%= f.text_field :two %>
<% end %>
- Если вам нужна более подробная информация, я предоставлю ее.
- Есть ли другой способ скрыть URL-параметры?
Заранее спасибо, Арун.