Rails: общие действия формы, отмена ссылки, теряющей `: back` при ошибке проверки - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь создать общий набор действий для отправки, отмены и уничтожения форм. В этот момент кажется, что все работает, за исключением того, что я теряю функциональность :back, после чего форма перезагружается из-за ошибок проверки. Есть ли способ уловить тот факт, что проверка не удалась, и в этом случае сохранить значение request.env['HTTP_REFERER'] или :back одинаковым, не редактируя каждый контроллер?

= simple_form_for @announcement do |f|
  = f.error_notification
  = f.input :message
  = f.input :starts_at
  = f.input :ends_at
  #submit
    = f.button :submit
    = "or "
    = link_to("cancel", url_for(:back))
    .right
      - if !f.object.new_record?
        - resource = (f.object.class.name).downcase
        = link_to "destroy", url_for(:action => 'destroy'), :confirm => "Are you sure that you want to delete this #{resource}?", :method => :delete
  .clear
  .non_input
    #post_back_msg
      #indicator.inline
        = image_tag "indicator.gif"
      .inline
        = "Please wait..."
      .non_input

Ответы [ 2 ]

0 голосов
/ 26 июня 2012

Это работает?

link_to "Cancel", @model.errors.any? ? request.env['HTTP_REFERRER'] : :back
0 голосов
/ 17 января 2011

Как насчет вспомогательного метода с чем-то вроде этого?

@previous = @previous.blank? ? request.env['HTTP_REFERRER'] : @previous

Тогда кнопка Отмена просто:

link_to('Cancel', @previous)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...