Ruby on rails开发从头来(windows)(十六)-登录
来源:互联网 发布:软件测试经典书籍 编辑:程序博客网 时间:2024/06/05 00:09
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
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>
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 %>
6. OK了,下面来看看结果,在浏览器中访问http://localhost:3003/login/login(其中的端口号根据自己的配置决定。),应该看到下面的结果:
输入的用户名或密码不正确的情况:
登录成功后:
- Ruby on rails开发从头来(windows)(十六)-登录
- Ruby on rails开发从头来(windows)(十六)-登录
- Ruby on rails开发从头来(windows)(二十六)- 使用Mock对象
- Ruby on rails开发从头来(windows)(三十二)- Rails的配置文件
- Ruby on rails开发从头来(windows)(三十一)- Rails的目录结构
- Ruby on rails开发从头来(windows)(一)-使用InstantRails快速搭建Ruby On Rails开发环境
- Ruby on rails开发从头来(windows)(一)-使用InstantRails快速搭建Ruby On Rails开发环境
- Ruby on rails开发从头来(windows)(二十七)- 测试驱动开发
- Ruby on rails开发从头来(三十七)- ActiveRecord基础
- Ruby on rails开发从头来(windows)(十一)-订单(Order)
- Ruby on rails开发从头来(windows)(十二)-订单(Order)
- Ruby on rails开发从头来(windows)(十三)-订单(Order)
- Ruby on rails开发从头来(windows)(三十五)- 日志(Log)
- Ruby on rails开发从头来(windows)(二十)-测试model(CRUD)
- Ruby on rails开发从头来(windows)(十三)-订单(Order)
- Ruby on rails开发从头来(windows)(十二)-订单(Order)
- Ruby on rails开发从头来(windows)(十一)-订单(Order)
- Ruby on rails开发从头来(windows)(四)-第一个添删查改例子 (修正原版错误)
- SQL Server 2005 系统数据库--及其还原的方法
- Android邮件附件中文名乱码问题草解
- Ruby on rails开发从头来(windows)(十七)-控制访问权限
- 区别醋的好坏
- MFC判断网络文件是否存在
- Ruby on rails开发从头来(windows)(十六)-登录
- 喝豆浆的八种禁忌
- 推荐给大家一篇文章,不多说什么
- Linux内存管理之页面异常处理
- Pb自制进度条
- Ruby on rails开发从头来(windows)(十五)-添加用户
- 食物搭配禁忌
- JSP学习——JSP基础知识(一)
- 云计算