2016-11-28 16 views
0

私はサイトとRubyの両方のドキュメントを検索しようとしましたが、まさに上記のことについて明確な答えが見つかりません。以下のメソッドの理解を助けてください:request.query_string

「リクエスト」と「query_string」は別々の2つのメソッドですが、私は実際にそれらが何をしているのかは分かりません。特に後者です。

ご迷惑をおかけして申し訳ございません。

ありがとうございます。

+0

はRailsのアプリでこれをか? – jphager2

答えて

1

Railsでは、コントローラとビューで使用できる#requestメソッドは、ActionDispatch :: Requestインスタンスを返します。 Requestオブジェクトは、HTTPリクエストからのデータへのアクセスを許可します。

Rack :: Request :: Helpersで定義されている#query_stringメソッドは、リクエストURLからクエリ文字列を返します。これは、 "?"の後に続くURLの一部です。 key = value & other_key = other_valueの形式でURLエンコードされたデータを指定します。

注:

ActionDispatch ::要求がラック::要求を含む、ラック::リクエストと同様に動作レールクラスである:: Envおよび要求を::ラック::におけるヘルパー現在のバージョンのRails v 5.0以前のバージョンでは、ActionDispatch :: RequestはRack :: Requestから直接継承されていました。

続きを読む:

+0

ありがとう、男!しかし、私はSinatraで 'require'を使用していることに気がついたと言わなければなりません - 同じルールが適用されると思いますか?再度、感謝します。 :) – IainK

+0

SinatraのRequestオブジェクトがRack :: Request(https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L23)から直接継承しているようです。 Rubyでは、#requireはロードパスからライブラリをロードし(1回のみ)、include(ActionDispatch :: RequestでRack :: Request :: Helpersで行われた処理など)を実行してモジュールを祖先チェーンに追加し、インスタンスメソッドを利用可能にします。 – jphager2

関連する問題