对于那些真正拥有或正在观看RailsCasts的人,以及那些真正看过这两个视频的人: http://railscasts.com/episodes/250-authentication-from-scratch?view=comments http://railscasts.com/episodes/250-authentication-from-scratch-revised
你会注意到,在他们这两个登录空白测试中,Ryan Bates似乎并不担心登录validation_presence错误后,他会从/ sessions / new重定向到/ sessions。这让我感到困扰,我仍然无法找到解决方案吗?我觉得这很简单,但我猜它只隐藏在某个地方可见,但不是我。
* 这是基本的RYAN BATES代码: *他有错误 - 我有错误:IDEAS ???
用户模特:
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 %>
答案 0 :(得分:1)
我没有亲,所以无法观看这一集...为什么你说你被重定向到/会话?日志文件实际上是说它正在这样做吗?
请记住......当您提交该表单时,它将发送到/ sessions。因此,您将在地址栏中看到“/ sessions”,但您没有被重定向到那里。当表单提交失败时,它会转到render :action => 'new'
- 当前的“/ sessions”网址。但是你还没有重定向......