4.1 リクエスト
パラメータを取得する
RailsではフォームからPOST
メソッドで送信されるデータおよびURLの?
に続くクエリ文字列のパラメータは共にparams
というハッシュの中に格納されています。
クエリパラメータを取得する
例えばURLでhttps://example.com/posts/search?title=Rails
のようなリクエストが来た時、Railsのコントローラでは以下のようにパラメータを取得できます。
class PostsController < ApplicationController
def search
@posts = Post.where("title LIKE ?", "%#{params[:title]}%")
end
end
POSTデータを取得する
以下のようなフォームを用いてデータを送信すると、Railsではハッシュとしてパラメータを取得することができます。
<form action="/posts" method="post">
<input type="text" name="post[title]" value="これはタイトルです。" />
<input type="text" name="post[body]" value="これは本文です。" />
</form>
class PostsController < ApplicationController
def create
# params[:post]には
# { title: "これはタイトルです。", body: "これは本文です。" }
# というハッシュが格納されています。
@post = Post.create(params[:post])
end
end
Strong Parametersを設定する
Strong Parameters
を使うことで、不正なパラメータを受け付けないようにしたり、必要のないパラメータを除外するなどのルールを定義することができます。
パラメータを許可する
params.permit(:title)
上のように定義することにより、paramsは:title
キーのみが許可されることになります。
必須のパラメータを設定する
params.require(:post)
上のように定義することにより、paramsは:post
キーが必須になります。
String Parameters
で利用できるデータの型
型 |
---|
String |
Symbol |
NilClass |
Numeric |
TrueClass |
FalseClass |
Date |
Time |
DateTime |
StringIO |
IO |
ActionDispatch::Http::UploadedFile |
Rack::Test::UploadedFile |
リクエストヘッダーを取得する
Railsではクライアントからリクエストがされるとその情報がrequest
オブジェクトとしてコントローラー内で利用することができます。
ヘッダーを取得するにはrequest.headers
にアクセスすることで可能です。
class PostsController < ApplicationController
def show
p request.headers
end
end