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

results matching ""

    No results matching ""