Использование того же действия для обработки и получения формы в Rails - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть подобное действие:

def add_credit_card
    if request.post?
      unless params[:conditions]
        flash[:error] = 'You need to accept!'
      end
    end
end

Это действие отображает следующее представление:

<%= form_tag do %>
  <fieldset>
      <%= check_box_tag "conditions"%> I agree to the <%= link_to "Terms and Conditions", consumer_terms_and_conditions_url, :target => "_blank" %>
  </fieldset>
  <%= submit_tag "Submit" %>
<% end %>

Когда я выполняю GET для этого действия, ошибки не отображаются.Когда я отправляю сообщение с установленным флажком, ошибки не отображаются.Когда я делаю первую отправку без установленного флажка, отображается ошибка, но проблема возникает, когда я делаю еще одну отправку, и флажок не установлен, ошибки все еще присутствуют.

Мои вопросы:

  1. Почему это происходит?
  2. Что было бы лучше для решения этой ситуации, когда форма не привязана кмодель и ошибки должны быть показаны только тогда, когда пользователь отправил форму?

1 Ответ

0 голосов
/ 04 февраля 2012

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

 flash.now[:error] = 'You need to accept!'

Кроме того, это не обязательно, но рассмотрите возможность использования:

 <%= check_box_tag 'conditions', 'accepted' %>

, а затем проверьте значение параметров [: условия] для строки «принято», то есть:

 unless params[:conditions]=='accepted'
   flash.now[:error] = 'You need to accept!'
 end
...