Придумайте ошибки регистрации - PullRequest
3 голосов
/ 28 декабря 2011

У меня есть форма регистрации на домашней странице моего веб-приложения на Rails, и мне было интересно, как я могу отображать ошибки регистрации на этой странице, а не на странице /users/sign_up.Я попытался переместить блок devise_error_message! на мою домашнюю страницу, но ничего не отображается, когда пользователь перенаправляется на домашнюю страницу после неудачной регистрации.

Поскольку devise_error_messages отображает ошибки на /users/sign_up page - почему они не отображаются на главной странице, когда я звоню туда?

1 Ответ

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

Может быть атрибут «ресурс», ожидаемый вспомогательными методами devise, не может быть разрешен ни к какому значению.Кроме того, вы не должны перенаправлять пользователя, а просто отображать домашнюю страницу с ошибками.Я не уверен, как модели передаются при визуализации.

Вы можете иметь custom_devise_error_messages в классе помощника вашей домашней страницы:

def custom_devise_error_messages!
    return "" if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    sentence = I18n.t("errors.messages.not_saved",
                      :count => resource.errors.count,
                      :resource => resource.class.model_name.human.downcase)

    html = <<-HTML
    <div class="alert alert-error">
      <a class="close" data-dismiss="alert">x</a>
      <ul style="padding:0; margin: 0; padding-left: 8px;">#{messages}</ul>
    </div>
    HTML

    html.html_safe
  end

Кроме того, из вашего метода действия регистрации вместо redirect_to :path_or_url используйте render :action_name.

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