1.写微博demo中登录的代码,在sessions控制器中写入如下代码:
class SessionsController < ApplicationController
def new
end
def create
@user = User.find_by(email: params[:session][:email].downcase)
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to @user
else
render 'new'
end
end
def destroy
session.delete(:user_id)
render 'new'
end
end
2.在路由文件中写入如下代码:
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
3.在视图文件夹下的sessions文件下的new.html.erb文件中写入:
<h1>log in</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(:session, url: login_path) do |f| %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "log in", class: "btn btn-primary" %>
<% end %>
</div>
</div>
4.之后开启rails服务,输入地址:192.168.1.199:3000/login进行登录,点击登录按钮报错信息是说find_by方法未定义
Rails 的
ActiveRecord
中find
方法是用来查找主键
的然后我来给出楼主回到
@user = User.where(email: params[:session][:email].downcase).take(1)