zoukankan      html  css  js  c++  java
  • Ruby on rails开发从头来(windows)(十六)登录

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

     

    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里再添加一个actionindex,内容入下:

    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(其中的端口号根据自己的配置决定。),应该看到下面的结果:

     

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

     

    登录成功后:
     

  • 相关阅读:
    2. Django每日一码 之as_view() 源码
    gdb
    Mex文件在VS2010中调试方法
    intel ipp6.0安装过程
    C++开源库大全
    Win7下搭建Go语言开发环境
    for_each使用方法详解
    使用VS2012编译和使用C++ STL(STLport)
    django css
    google mock C++单元测试框架
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_dotnet_windows_study_16.html
Copyright © 2011-2022 走看看