为了账号安全,请及时绑定邮箱和手机立即绑定

Rails参数解释了吗?

/ 猿问

Rails参数解释了吗?

繁星淼淼 2019-10-04 14:39:51

任何人都可以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

我希望能够逐行阅读此代码并了解发生了什么。


查看完整描述

3 回答

?
青春有我

当用户请求页面时,参数来自用户的浏览器。对于最常见的HTTP GET请求,参数被编码在url中。例如,如果用户的浏览器请求


http://www.example.com/?foo=1&boo=octopus


那么params[:foo]将是“ 1”,并且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”。


Ruby on Rails参数与PHP中的$ _REQUEST数组等效。


查看完整回答
反对 2019-10-04
?
明月笑刀无情

正如其他人指出的那样,params值可以来自GET请求的查询字符串或POST请求的表单数据,但它们还可以来自第三方:URL的路径。


您可能知道,Rails使用一种称为路由的方法将请求定向到其相应的控制器动作。这些路由可能包含从URL中提取并放入的段params。例如,如果您有这样的路线:


match 'products/:id', ...

然后,对URL之类的请求http://example.com/products/42将设置params[:id]为42。


查看完整回答
反对 2019-10-04
?
动漫人物

基本上,参数是Rails应用程序的用户指定数据。


发布表单时,通常使用POST请求而不是GET请求来执行。如果有帮助,您可以在浏览站点时将正常的rails请求视为GET请求。


提交表单时,控件将被返回给应用程序。您如何获取已提交给表单的值?params是怎么回事。


关于您的代码。@vote = Vote.new params[:vote]使用params [:vote]数据创建新的Vote到数据库。假设您提交的表单用户以名称:vote命名,则其所有数据都在哈希表的:vote字段中。


接下来的两行用于获取项目和uid用户已提交到表单。


@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])

从条件为item_id = item和user_id = uid的数据库中查找最新或最后插入的投票。


下一行需要最后的投票时间和当前时间。


查看完整回答
反对 2019-10-04

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信