railstutorial.org 无法识别示例应用登录密码
railstutorial.org sample app login passwords not recognized
我已完成第 10.4.1 节的示例应用程序教程。我所有的测试都是绿色的。在完成 10.4.1 之前,一切都按预期工作。但是,在编辑 _user.html.erb 部分以添加删除 link 后,登录功能不起作用。不识别现有用户的密码。如果我创建一个新用户,则注册过程有效。然后我可以注销并使用该新用户的电子邮件和密码登录,但无法访问之前创建的帐户。不知道该怎么办。
_user.html.erb:
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to 'delete', user, method: :delete,
data: { confirm: 'You sure?' } %>
<% end %>
</li>
users_controller.rb
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update]
before_action :correct_user, only: [:edit, :update]
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user= User.find(params[:id])
end
def update
#@user = User.find(params[:id])
if @user.update_attributes(user_params)
#sign_in @user
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed"
redirect_to users_path
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
# Before filters
# Confirms a logged-in user
def logged_in_user
unless logged_in?
store_location
flash[:danger] = "Please log in."
redirect_to login_url
end
end
# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end
end
rails 服务器控制台没有错误消息。
运行 使用 "rails c" 命令在终端中的 rails 控制台。然后输入 u = Users.all
查看数据库中有多少现有用户。也许您所说的那个用户并不存在。也许这是您创建该用户时的临时会话。
比那还要蠢。作为练习的一部分,我编辑了第一个用户的密码,但后来数据库被重置了。必须使用初始默认密码,而不是我将其更改为的密码。此刻心情很不好。
我已完成第 10.4.1 节的示例应用程序教程。我所有的测试都是绿色的。在完成 10.4.1 之前,一切都按预期工作。但是,在编辑 _user.html.erb 部分以添加删除 link 后,登录功能不起作用。不识别现有用户的密码。如果我创建一个新用户,则注册过程有效。然后我可以注销并使用该新用户的电子邮件和密码登录,但无法访问之前创建的帐户。不知道该怎么办。
_user.html.erb:
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to 'delete', user, method: :delete,
data: { confirm: 'You sure?' } %>
<% end %>
</li>
users_controller.rb
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update]
before_action :correct_user, only: [:edit, :update]
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user= User.find(params[:id])
end
def update
#@user = User.find(params[:id])
if @user.update_attributes(user_params)
#sign_in @user
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed"
redirect_to users_path
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
# Before filters
# Confirms a logged-in user
def logged_in_user
unless logged_in?
store_location
flash[:danger] = "Please log in."
redirect_to login_url
end
end
# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end
end
rails 服务器控制台没有错误消息。
运行 使用 "rails c" 命令在终端中的 rails 控制台。然后输入 u = Users.all 查看数据库中有多少现有用户。也许您所说的那个用户并不存在。也许这是您创建该用户时的临时会话。
比那还要蠢。作为练习的一部分,我编辑了第一个用户的密码,但后来数据库被重置了。必须使用初始默认密码,而不是我将其更改为的密码。此刻心情很不好。