Dru*_*Dru 226 ruby ruby-on-rails
任何人都可以params在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
Run Code Online (Sandbox Code Playgroud)
我希望能够逐行阅读此代码,并了解正在发生的事情.
Dav*_*son 277
params在请求页面时来自用户的浏览器.对于最常见的HTTP GET请求,params在url中编码.例如,如果用户的浏览器请求
http://www.example.com/?foo=1&boo=octopus
然后params[:foo]将是"1"并且params[:boo]将是"章鱼".
在HTTP/HTML中,params实际上只是一系列键值对,其中键和值是字符串,但Ruby on Rails有一个特殊的语法,使params成为哈希内部哈希.例如,如果用户的浏览器请求
http://www.example.com/?vote[item_id]=1&vote[user_id]=2
那么params[:vote]将是一个哈希,params[:vote][:item_id]将是"1"并且params[:vote][:user_id]将是"2".
Ruby on Rails参数等同于PHP中的$ _REQUEST数组.
ham*_*mar 73
正如其他人所指出的那样,params值可以来自GET请求的查询字符串,也可以来自POST请求的表单数据,但是它们也可以来自第三位:URL的路径.
您可能知道,Rails使用称为路由的东西将请求定向到相应的控制器操作.这些路由可能包含从URL中提取并放入的段params.例如,如果您有这样的路线:
match 'products/:id', ...
Run Code Online (Sandbox Code Playgroud)
然后对URL的请求http://example.com/products/42将设置params[:id]为42.
the*_*jaz 47
Params包含以下三组参数:
match '/user/:id' 在routes.rb中将设置params [:id]params[:controller]并params[:action]始终可用并包含当前控制器和操作Sma*_*mar 13
基本上,参数是用户指定的数据到rails应用程序.
发布表单时,通常使用POST请求而不是GET请求.当您浏览网站时,您可以将普通的rails请求视为GET请求,如果有帮助的话.
提交表单时,控件将返回给应用程序.如何获得您提交给表单的值?params是如何.
关于你的代码.@vote = Vote.new params[:vote]使用params [:vote]的数据创建新的数据库投票.鉴于您的表单用户提交的名称是在name:vote下命名的,它的所有数据都在这个:hash的投票字段中.
接下来的两行用于获取项目和uid用户已提交到表单.
@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
Run Code Online (Sandbox Code Playgroud)
使用条件item_id = item和user_id = uid从数据库中查找最新或最后插入的投票.
下一行需要最后一次投票时间和当前时间.
小智 6
在Rails方面,params是一种返回ActionController::Parameters对象的方法。参见/sf/answers/3084925091/