ROR学习记录4
今天我们给博客加上用户系统,首先输入如下命令来建立用户模型
rails g model user login:string hashed_password:string salt:string
和以前一样,更新数据库
rake db:migrate
更新完数据库后
在命令行中敲入rails c,进入console,在console中输入
User.create(:login => "admin", :password => "123456")
如果出现ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: password
错误,说明你没有将password
加入attr_accessible
用户做好了,我们就可以开始做用户登录,输入exit从console中退出,在命令行中敲入
rails g controller sessions
然后我们打开路由文件config/routes.rb,加上
resources :sessions
修改完毕后,在命令行中输入
touch app/views/sessions/new.html.erb
然后打开刚刚建立的这个文件,修改为
<h1>Admin Login</h1>
<%= form_tag sessions_path do -%>
<label for="login">Login</label>
<%= text_field_tag :login, parame[:login]%>
<label for="password">Password</label>
<%= text_field_tag :password, parame[:password]%>
<%= submit_tag "Login"%>
<% end %>
打开app/controllers/sessions_controller.rb,修改代码
class SessionsController < ApplicationController
def create
@user = User.authentication(parame[:login], parame[:password])
if @user
session[:user_id] = @user.id
flash[:notice] = "Weclome #{@user.login}"
redirect_to posts_path
else
flash[:notice] = "The login or password is not correct."
redirect_to new_session_path
end
end
end
最后我们将提示信息加上,打开app/views/layouts/application.html.erb进行修改
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Blog</title>
</head>
<body>
<%= flash[:notice] %>
<%= yield %>
</body>
</html>
在浏览器中输入127.0.0.1:3000/sessions/new,我们发现这个页面已经出来了
登录失败
登录成功