在研究 Rails 应用程序时,我看到如下语句:
parameter[:user_id]
params[:user_id]
params["userid"]
谁能告诉我它们之间是否有任何重大区别?或者,都是只获取参数,我可以互换使用它们吗?
在研究 Rails 应用程序时,我看到如下语句:
parameter[:user_id]
params[:user_id]
params["userid"]
谁能告诉我它们之间是否有任何重大区别?或者,都是只获取参数,我可以互换使用它们吗?
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
. _
不会只是消失,因此它们可以保持不同的值。
不,您需要查看每个使用的上下文。params
是可用于控制器中的方法的普通参数散列。它包含作为请求的一部分传入的参数 asGET
或POST
params。
因此,给定以下 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
哈希很可能是辅助方法或其他东西中参数哈希的本地副本或引用。