快速业务通道

Ruby on rails开发从头来(windows)(十六)-登录 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on rails开发从头来(windows)(十六)-登录

时间:2011-12-02 博客园 Cure

现在我们的购物车程序为两种用户提供了服务,一类是普通用户,一类是管理员。两类用户分别有不同的功能。上次我们又实现了添加用户的功能,这次我们来实现登录的功能。

1.给login_controller添加login方法。

上次使用rails的命令行生成的login_controller中已经包含了login方法,下面修改该方法的内容:

def login
  
if request.get?
  
session[:user_id] = nil
  
@user = User.new
  
else
  
@user = User.new(params[:user])
  
logged_in_user = @user.try_to_login
  
if logged_in_user
  
session[:user_id] = logged_in_user.id
  
redirect_to(:action => "index")
  
else
  
flash[:notice] = "Invalid user/password combination"
  
end
  
end
  
end

Ruby on rails开发从头来(windows)(十六)-登录(2)

时间:2011-12-02 博客园 Cure

2.在上面的方法中看到调用了user.try_to_login方法,下面我们就要在user.rb文件中添加该方法:

def self.login(name, password)
  
hashed_password = hash_password(password || "")
  
find(:first,
  
:conditions => ["name = ? and hashed_password = ?",
  
name, hashed_password])
  
end
  
def try_to_login
  
User.login(self.name, self.password)
  
end

在这个方法里我们判断hash_password是不是匹配。

3.现在我们来添加一个index页面,用在用户登录后显示订单信息。在views\login目录下,添加一个index.rhtml文件,内容如下:

<% @page_title = "Administer your Store" -%>
  
<h1>Depot Store Status</h1>
  
<p>
  
    Total orders in system: <%= @total_orders %>
  
</p>
  
<p>
  
    Orders pending shipping: <%= @pending_orders %>
  
</p>

Ruby on rails开发从头来(windows)(十六)-登录(3)

时间:2011-12-02 博客园 Cure

4.当然我们还要在login_controller里再添加一个action:index,内容入下:

def index
  
@total_orders = Order.count
  
@pending_orders = Order.count_pending
  
end

里面又调用了Order.count 和Order.count_pending,就还要修改order.rb文件,内容如下:

def self.count_pending
  
count("shipped_at is null")
  
end

5.最后我们还差一个login的页面,下面创建一个login.rhtml,放在views\login目录下,其内容为:

<%= form_tag %>
  
    <table>
  
           <tr>
  
                  <td>User name:</td>
  
                  <td><%= text_field("user", "name") %></td>
  
           </tr>
  
           <tr>
  
                  <td>Password:</td>
  
                  <td><%= password_field("user", "password") %></td>
  
           </tr>
  
           <tr>
  
                  <td></td>
  
                  <td><input type="submit" value=" LOGIN " /></td>
  
           </tr>
  
    </table>
  
<%= end_form_tag %>

Ruby on rails开发从头来(windows)(十六)-登录(4)

时间:2011-12-02 博客园 Cure

6.OK了,下面来看看结果,在浏览器中访问http://localhost:3003/login/login(其中的端口号根据自己的配置决定。),应该看到下面的结果:

Ruby on rails开发从头来(windows)(十六)-登录 - 编程入门网

输入的用户名或密码不正确的情况:

Ruby on rails开发从头来(windows)(十六)-登录 - 编程入门网

登录成功后:

Ruby on rails开发从头来(windows)(十六)-登录 - 编程入门网

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号