在Rails中使用参数[:user_id],params [:user_id],params [“userid”]?

时间:2012-12-26 10:23:18

标签: ruby-on-rails ruby

在研究Rails应用程序时,我看到了如下语句:

parameter[:user_id]
params[:user_id]
params["userid"]

有谁可以告诉我他们之间是否有任何重大差异?或者,都是 只提取参数,我可以互换使用吗?

3 个答案:

答案 0 :(得分:2)

parameter[:user_id]

我不认为这是正式的。但是当前请求对象上有一个parameters方法。请参阅控制器操作中的request.parameters

params[:user_id]

使用params[:user_id]与调用request.parameters[:user_id]相同。 params[:user_id]也与params["user_id"]相同。请参阅HashWithIndifferentAccess

我不确定这只是你的错字,但params[:user_id]params["userid"]不一样,即使HashWithIndifferentAccess也是如此。 _不会消失,因此他们可以拥有不同的价值观。

答案 1 :(得分:0)

paramsparameters是相同的。它们在单个哈希值中返回GETPOST个参数。

没有parameter这样的东西。

参考:rails api

答案 2 :(得分:0)

不,您需要查看每个使用的上下文。 params是控制器中方法可用的常规参数哈希。它包含作为请求的一部分传入的参数GETPOST参数。

因此,给定以下URL:

http://www.testsite.org/some_resource?user_id=13

params[:user_id]将包含值13

如果网址改为:

http://www.testsite.org/some_resource?userid=13

您需要使用params[:userid]来获取值。所以这一切都取决于为不同控制器制作URL的方式。

还有第三种方法,您可以将URL本身的部分映射到应用程序路径中的params。请参阅应用中的config/routes.rb。例如,使用以下路线:

match '/user/:user_id' => 'users#show'

您可以传递这样的网址:

http://www.testsite.org/user/13

在您的UsersController.show方法中,您可以像使用params[:user_id]一样正常访问用户ID。

parameter哈希很可能是辅助方法中的params哈希的本地副本或引用。