рельсы - Devise - Создание регистрационной формы - PullRequest
2 голосов
/ 08 ноября 2010

Я бился головой об стену, пытаясь понять, как заставить Devise работать с регистрацией клиентов ....

Итак, на моей целевой странице я хочу показать регистрационную форму, поэтому ядобавил это к моему представлению:

<%= render 'devise/registrations/new' %>

В этом частичном я имею в виду тег формы следующим образом:

<%= form_for(user_registration_path, :url => user_registration_path) do |f| %>
.
.

В моем макете приложения у меня есть:

<% flash.each do |key, value| %>
    <div class="flash <%= key %>"><%= value %></div>
<% end %>

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я отправляю новую регистрационную форму с неверными параметрами, я не вижу сообщения об ошибке?

Но если я отправляю правильную информацию, форма говорит, что она работала ичто мне нужно проверить свою электронную почту для ссылки подтверждения, что хорошо.

Можете ли вы помочь мне понять, как получить этот рабочий конец-2-end, чтобы я мог отобразить ошибки:

Вот мой полный контроллер:

  # GET /users/new
  # GET /users/new.xml                                            
  # GET /users/new.json                                    HTML AND AJAX
  #-------------------------------------------------------------------
  def new
    respond_to do |format|
      format.json { render :json => @user }   
      format.xml  { render :xml => @user }
      format.html
    end
  end

  # GET /users/1/edit                                                      
  # GET /users/1/edit.xml                                                      
  # GET /users/1/edit.json                                HTML AND AJAX
  #-------------------------------------------------------------------
  def edit
    respond_to do |format|
      format.json { render :json => @user }   
      format.xml  { render :xml => @user }
      format.html
    end

  rescue ActiveRecord::RecordNotFound
    respond_to_not_found(:json, :xml, :html)
  end

  # POST /users
  # POST /users.xml         
  # POST /users.json                                      HTML AND AJAX
  #-----------------------------------------------------------------
  def create
    @user = User.new(params[:user])

    if @user.save
      respond_to do |format|
        format.json { render :json => @user.to_json, :status => 200 }
        format.xml  { head :ok }
        format.html { redirect_to :action => :index }
      end
    else
      respond_to do |format|
        format.json { render :text => "Could not create user", :status => :unprocessable_entity } # placeholder
        format.xml  { head :ok }
        format.html { render :action => :new, :status => :unprocessable_entity }
      end
    end
  end

Модель:

  validates :fname, :presence => true, :length => { :minimum => 2 }
  validates :lname, :presence => true, :length => { :minimum => 2 }
  validates :password, :presence => true, :length => { :minimum => 6 }
  validates :email, :presence => true, :length => { :minimum => 6 }

Ответы [ 3 ]

1 голос
/ 24 ноября 2010

Из github readme: «Помните, что Devise использует флеш-сообщения, чтобы сообщить пользователям, был ли вход успешным или неудачным. Devise ожидает, что ваше приложение будет вызывать« flash [: note] »и« flash [: alert] »в зависимости от ситуации."

0 голосов
/ 21 апреля 2016

Просто вставьте это в начале вашей формы, конец до конца:

  <%= devise_error_messages! %>

Придумать это немного сложно, я наконец-то сумел сам разобраться, и это круто. Кстати, не визуализируйте представление как частичное, используйте шаблоны, а затем установите для своего root значение users#registrations_controller, если вы создали собственные контроллеры и представления.

Если нет, я написал об этом в блоге здесь

0 голосов
/ 08 ноября 2010

Где твой <%= error_messages_for %>? Вот как будут отображаться ошибки.

Кроме того, devise нужны виртуальные атрибуты в модели для дополнительных атрибутов, поэтому не забудьте добавить :lname, :fname и т. Д. ... в пользовательскую модель devise или все, что вы делаете.


Обновление

<%= f.error_messages_for :model %>

До Rails 3 так форматировались ошибки, но в R3 он был удален, и вам нужно установить плагин для доступа к ошибкам таким способом. Смотрите комментарии по ссылке на плагин

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