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

paramsparameters同じです。それらは、単一のハッシュでパラメータGETとパラメータの両方を返します。POST

のようなものはありませんparameter

ref:rails api

于 2012-12-26T10:35:40.957 に答える
0

いいえ、それぞれが使用されているコンテキストを確認する必要があります。paramsコントローラのメソッドで使用できる通常のパラメータハッシュです。これには、リクエストの一部としてGETまたは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が作成される方法に帰着します。

3番目の方法は、URL自体の一部をアプリケーションへのルートのパラメーターにマップできる方法です。config/routes.rbアプリケーションで参照してください。たとえば、次のルートを使用します。

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

次のようなURLを渡すことができます。

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

また、UsersController.showメソッドでは、通常のように使用してユーザーIDにアクセスできますparams[:user_id]

ハッシュは、ヘルパーメソッドなどのparamsハッシュのparameterローカルコピーまたは参照である可能性があります。

于 2012-12-26T10:42:28.043 に答える