对于那些真正观看或正在观看RailsCasts的人,以及那些实际观看过这两个视频的人:http://railscasts.com/episodes/250-authentication-from-scratch?view=commentshttp://railscasts.com/episodes/250-authentication-from-scratch-revised
您会注意到,在这两个测试中,在他所做的每次登录空白测试中,Ryan Bates 似乎并不关心这样一个事实,即在登录validation_presence错误时,他会被从/sessions/new 重定向到/sessions。这一直困扰着我,我仍然很难找到解决这个问题的方法?我有一种感觉,它相当简单,但我想它只是隐藏在可见的地方,而不是对我来说。
*这基本上是瑞安·贝茨的代码:*他有错误 - 我有错误。
想法???用户模型:
has_secure_password
attr_accessible :email, :password, :password_confirmation
validates_uniqueness_of :email
会话控制器:
def new
end
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_url, notice: "Logged in!"
else
flash.now.alert = "Email or password is invalid"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "Logged out!"
end
会话登录页面:
<h1>Log In</h1>
<%= form_tag sessions_path do %>
<div class="field">
<%= label_tag :email %><br />
<%= text_field_tag :email, params[:email] %>
</div>
<div class="field">
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</div>
<div class="actions"><%= submit_tag "Log In" %></div>
<% end %>
我没有专业人士,所以不能看这一集......为什么你说你被重定向到/sessions? 日志文件是否真的说它正在这样做?
记得。。。当您提交该表单时,它将发布到/sessions。 因此,您会在地址栏中看到"/sessions",但您不会被重定向到那里。 当表单提交失败时,它将render :action => 'new'
- 在"/sessions"的当前网址上。 但是您仍然没有重定向....