rubyonrails:Ruby on rails开发从头来(windows)(十 6)-登录

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

  1.     给login_controller添加login思路方法

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

def login
  
request.get?
  
session[:user_id] = nil
  
@user = User.
  

  
@user = User.(params[:user])
  
logged_in_user = @user.try_to_login
  
logged_in_user
  
session[:user_id] = logged_in_user.id
  
redirect_to(:action => "index")
  

  
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页面用在用户登录后显示订单信息在viewslogin目录下添加个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放在viewslogin目录下其内容为:

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





Tags:  rubyonrails安装 rubyforrails rubyrails rubyonrails

延伸阅读

最新评论

发表评论