Я использую Ruby 1.8.7, Rails 2.3.8 и Authlogic 2.1.6 для регистрации, входа в систему и выхода из системы. На самом деле, эти три вещи - почти все, что я сделал!
Во время регистрации, если у пользователя есть ошибки в его регистрационных данных, я хочу, чтобы поля password и password_confirmation были пустыми при перерисовке представления. Я предполагал, что можно очистить поля в 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 => "" %>
Но это не кажется мне идеальным способом справиться с этим!