2010-10-30 2 views
0

Я использую Ruby 1.8.7, Rails 2.3.8 и используя Authlogic 2.1.6 для регистрации, входа в систему, выхода из системы. На самом деле, эти три вещи - это почти все, что я сделал!Как очистить пароль при регистрации/регистрации с помощью authlogic?

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

class UsersController < ApplicationController 
before_filter :require_no_user, :only => [:new, :create] 

def create 
    @user = User.new(params[:user]) 
    if @user.save 
    @user.save 
    flash[:success] = "Registration successful!" 
    redirect_back_or_default root_path 
    else 
    @user.password = "" 
    @user.password_confirmation = "" 
    @page_title = "Registration" 
    end 
end 
... 

Поле password_confirmation успешно очищается этим кодом, но поле пароля нет. Я вставил вызов отладчика сразу после «else», и, конечно же, значение @ user.password не изменилось по строке «@ user.password». Я предполагаю, что в Authlogic есть что-то, что восстанавливает значение поля после того, как я попытаюсь его очистить. (Я также попытался установить его на «ноль», с тем же результатом).

Я пришел с работы вокруг, я явно устанавливая значение поля формы на «» в представлении:

   <%= form.password_field :password, :value => "" %> 

Но это не кажется мне идеальным способом справиться!

+0

Сверху, чтобы обойти это, это привело к лучшему тестированию моих представлений в rspec. Все это опыт обучения! – Iain

ответ

1

Вы можете делать то, что у вас есть уже или:

def create 
    if @user_session.save 
    ... 
    else 
    params[:users][:password] = '' 

Лично я бы придерживаться того, что у вас есть.

+0

Это тоже работает. Я думаю, что мне нравится твоя работа лучше, чем моя, потому что мне кажется более правильным, чтобы у меня было что-то в контроллере, а не на вид ... – Iain

+0

Хорошо, я соврал. ваше решение не работает. Я вернулся к использованию значения => "" в представлении для решения проблемы. Единственное, что мне ясно говорит в этот момент, это то, что я не знаю, когда/как заполняются полевые данные. :) – Iain

+0

Либо/или действительно. Вы подавляете вывод в представлении, чтобы действительно было, где он принадлежит. Конвенция опирается на тонких контроллеров, и я думаю, что это лишний беспорядок. Обратите внимание, что пользователи с ошибками, а не пользователи, почему они не работают. – mark

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