在研究 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或POSTparams。
因此,给定以下 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哈希很可能是辅助方法或其他东西中参数哈希的本地副本或引用。