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
コントローラのメソッドで使用できる通常のパラメータハッシュです。これには、リクエストの一部としてGET
または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が作成される方法に帰着します。
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
ローカルコピーまたは参照である可能性があります。