Ruby on Rails:控制器纵览
http://tech.ddvip.com 2008年01月18日 社区交流
内容摘要:RoR中所提供的控制器叫动作控制器(ActionController)。本文将主要讨论动作控制器所提供的几种服务,以及如何使用动作控制器。
class CookiesController < ApplicationController
def create_cookie
cookies[:the_time] = Time.now.to_s
redirect_to :action =>"action_two"
end
def get_cookie
cookie_value = cookies[:the_time]
render(:text =>" #{cookie_value}")
end
end
在以上代码中,在控制器中有两个动作方法,一个是设置cookie的,另一个是读取和显示cookie值的。在这里cookies[]是一个cookies对象数组,我们不需要声明它,只需要将它看成一个普通数组即可。
接下来使用redirect_to方法通过参数:action将请新进行重定向。在get_cookie动作中,cookies的值被取出来,然后使用render()方法显示这些值。
上面讨论cookie的使用方法。但如果有一种方法可以透明使用cookie,那不是更好吗?这个技术就是session。就象cookie一样,session数组也无需声明。它的用法类似于cookie对象。下面的代码描述了session的使用。
class SessionController < ApplicationController
def login
user = User.find_by_name_and_password(params[:user], params[:password])
if user
session[:user_id] = user.id
redirect_to :action =>"index"
else
reset_session
flash[:note] ="有户名或密码不正确!"
end
end
上面代码对user_id和password进行核对。如果用户存在,将这个用户的user-id保存在session中。其中session[:user_id] = user.id的形式和保存cookie的形式完全一样。接下来重定向到index页上。如果用户不存在,使用reset_session将session设为无效,并通过RoR返回简单的提示信息。
来源:天极 作者:李宁 责编:豆豆技术应用