新人求解答:rails3中怎样使用find方法来改写rails4中的find_by方法?

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方法未定义

阅读 2.6k
1 个回答

Rails 的 ActiveRecordfind 方法是用来查找 主键

然后我来给出楼主回到

@user = User.where(email: params[:session][:email].downcase).take(1)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进