1

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

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

谁能告诉我它们之间是否有任何重大区别?或者,都是只获取参数,我可以互换使用它们吗?

4

3 回答 3

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. _不会只是消失,因此它们可以保持不同的值。

于 2012-12-26T10:42:12.383 回答
0

params并且parameters是相同的。它们在单个哈希中返回GET和参数。POST

没有这样的事情parameter

参考:rails api

于 2012-12-26T10:35:40.957 回答
0

不,您需要查看每个使用的上下文。params是可用于控制器中的方法的普通参数散列。它包含作为请求的一部分传入的参数 asGETPOSTparams。

因此,给定以下 URL:

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

params[:user_id]包含值13

如果 URL 改为:

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

您需要使用params[:userid]来获取价值。因此,这一切都归结为为不同控制器制作 URL 的方式。

还有第三种方法,您可以将部分 URL 本身映射到应用程序中的路由参数。在您的应用程序中查看config/routes.rb。例如以下路线:

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

你可以像这样传入一个 URL:

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

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

parameter哈希很可能是辅助方法或其他东西中参数哈希的本地副本或引用。

于 2012-12-26T10:42:28.043 回答