任何人都可以在 Rails 控制器中解释params:它们来自哪里,它们引用了什么?
params
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]将是“章鱼”。
params[:foo]
params[:boo]
在 HTTP/HTML 中,参数实际上只是一系列键值对,其中键和值都是字符串,但是 Ruby on Rails 有一种特殊的语法可以使参数成为内部带有散列的散列。例如,如果用户的浏览器请求
http://www.example.com/?vote[item_id]=1&vote[user_id]=2
然后params[:vote]将是一个哈希,params[:vote][:item_id]将是“1”,params[:vote][:user_id]将是“2”。
params[:vote]
params[:vote][:item_id]
params[:vote][:user_id]
Ruby on Rails 参数相当于 PHP 中的$_REQUEST 数组。