2011-12-28 5 views
3

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

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

ответ

0

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

Вы можете иметь 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.

Смежные вопросы