谁能解释一下Rails控制器中的参数:它们来自哪里,它们引用了什么?
def create
@vote = Vote.new(params[:vote])
item = params[:vote][:item_id]
uid = params[:vote][:user_id]
@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
last_vote_time = @extant.created_at unless @extant.blank?
curr_time = Time.now
end
我希望能够逐行阅读这些代码,并理解发生了什么。
参数来自用户请求页面时的浏览器。对于HTTP GET请求(这是最常见的请求),参数被编码在URL中。例如,如果用户的浏览器请求
http://www.example.com/?foo=1&boo=octopus
那么params[:foo]将是"1",params[:boo]将是"octopus"。
在HTTP/HTML中,参数实际上只是一系列键-值对,其中键和值是字符串,但是Ruby on Rails有一种特殊的语法,可以使参数成为一个包含哈希的哈希值。例如,如果用户的浏览器请求
http://www.example.com/?vote [item_id] = 1票(user_id) = 2
那么params[:vote]将是一个哈希值,params[:vote][:item_id]将是“1”,params[:vote][:user_id]将是“2”。
Ruby on Rails的参数相当于PHP中的$_REQUEST数组。
基本上,参数是用户指定给rails应用程序的数据。
当您提交表单时,通常使用post请求而不是GET请求。如果有帮助的话,在浏览站点时,可以将普通的rails请求视为GET请求。
当您提交表单时,控件将被抛回应用程序。如何获得提交给表单的值?Params是how。
关于你的代码。@vote =投票。new params[:vote]使用参数[:vote]的数据创建新的vote到数据库。假设你的表单用户提交的是在name:vote下命名的,它的所有数据都在这个:vote字段的散列中。
接下来的两行用于获取用户提交给表单的条目和uid。
@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
用item_id = item和user_id = uid从数据库中查找最新插入的或最后插入的投票。
下一行显示上次投票时间和当前时间。