레일즈 3.2.2를 사용 중이며 유효성 검사가 실패 할 때 field_with_errors div가 표시되지 않습니다.어떤 이유에서 field_with_errors가 나타나지 않습니다.
보기/세션/new.html.erb
<%= form_tag sessions_path do %>
<p><%= label_tag :email %><br />
<%= email_field_tag :email %></p>
<p><%= label_tag :password %><br />
<%= password_field_tag :password %></p>
<p><%= submit_tag "Log in" %></p>
<% end %>
컨트롤러/sessions_controller.rb
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password]) && user.account.subdomain == request.subdomain
session[:user_id] = user.id
redirect_to home_path
flash[:notice] = "Logged in!"
else
flash.now[:error] = "Invalid email or password"
render 'new'
end
end
모델/user.rb
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation
has_secure_password
validates :email, :presence => true, :uniqueness => true
validates :password, :presence => true, :on => :create
플래시 메시지가 표시되지만 유효성 검사에 실패하면 내보기에서 field_with_errors 래퍼 div가 렌더링되지 않습니다. 어떤 아이디어?
감사합니다.
흠. .. 그래서 내 로컬 사용자 대신 @user를 사용하도록 sessions_controller를 설정했지만 유효하지 않은 양식을 제출할 때'undefined method 'errors for'nil : NilClass'을 입력했습니다. – Nathan
모델 오류 메시지에 대해 묻는 것으로 가정했습니다. 일반. 어쨌든 인증 메소드가 사용자 또는 nil을 반환하기 때문에'user' 인스턴스는 에러를 가지지 않습니다. 그래서 로그인 양식의 플래시 메시지로 충분합니다. 성공적으로 로그인했거나 로그인하지 않았습니다. – James
아, 그래. 감사! – Nathan