在研究Rails应用程序时,我看到了如下语句:
parameter[:user_id]
params[:user_id]
params["userid"]
有谁可以告诉我他们之间是否有任何重大差异?或者,都是 只提取参数,我可以互换使用吗?
答案 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)
答案 2 :(得分:0)
不,您需要查看每个使用的上下文。 params
是控制器中方法可用的常规参数哈希。它包含作为请求的一部分传入的参数GET
或POST
参数。
因此,给定以下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哈希的本地副本或引用。