为什么params包含有关控制器和动作的详细信息?

时间:2013-05-17 03:57:12

标签: ruby-on-rails ruby ruby-on-rails-3

好奇,params应该是包含有关浏览器请求的详细信息的哈希。但是debug(params)返回

controller: controllername 
action:actionname
.
.
.

它是否包含这些键值对的具体原因?

3 个答案:

答案 0 :(得分:1)

params来自三个来源

  • 网址
  • 查询字符串(GET)
  • 帖子数据通常通过表单提交(POST)

控制器名称和操作名称来自URL。说网址是“文章/ 123”,Rails会知道:

  • 控制器为ArticlesController - 因为“文章”是网址的第一部分
  • 操作为#show,因为请求为GET并且有ID

routes.rb中定义控制器和操作后,可以识别它们。还记得您需要为自定义路由分配控制器名称和操作吗?

答案 1 :(得分:1)

我只是猜测,但这可能是在Rails建立在Rack之前的日子。如今,您只需将这些东西放入Rack环境中(现在它们可能就在那里)。它们可能仍然存在向后兼容性。

答案 2 :(得分:0)

因此,您可以在过滤器,视图(不是最佳实践)之前/之后/周围查询那些,以及多个控制器之间共享的方法