【Rails】paramsとは?意味と使い方を初心者向けにわかりやすく解説

Web開発

はじめに

Ruby on Rails(Rails)を使ったWeb開発を始める際、paramsという言葉をよく耳にします。これは、リクエストから送られたデータを扱うために必要なものですが、初心者にとっては少し難解に感じることもあります。

この記事では、Railsのparamsについて、具体的なコード例を交えながら、初心者でも理解できるように解説します。Webアプリケーションを開発する上で、paramsの使い方を知っておくことは重要です。この記事を読み終わる頃には、Railsのparamsを活用できるようになるでしょう。

この記事を読むとわかること

  • paramsの基本的な使い方
  • コントローラーでのparamsの利用方法
  • ルートパラメーター、クエリパラメーター、フォームパラメーターの違い
  • 実務で役立つparamsの活用法

Railsにおけるparamsとは?

Railsのparamsは、ユーザーから送られたデータを受け取るために使用されるオブジェクトです。例えば、Webフォームから送信されたデータやURLのクエリパラメーターなど、さまざまな方法でデータを取得できます。

Railsでは、このparamsを使用して、ユーザーの入力に基づいて動的にコンテンツを表示したり、データベースに保存したりします。基本的に、paramsはリクエストに含まれる情報を扱うためのものです。

基本的なparamsの構造

paramsは、キーと値のペアで構成されるハッシュ(連想配列)です。リクエストから送られた情報に応じて、paramsの内容は変わります。

例えば、ユーザーがURLに?name=John&age=30というクエリパラメーターを追加した場合、paramsは以下のようになります。

params = { "name" => "John", "age" => "30" }

このように、Railsでは簡単にリクエストからデータを取得し、操作することができます。

Railsのコントローラーでparamsを使う

Railsのコントローラーでは、paramsを使ってユーザーから送信されたデータを処理します。例えば、ユーザーがフォームを送信した際にその内容を取得する方法を見てみましょう。

フォームからのデータを取得する

次のようなフォームがあるとしましょう。

<form action="/greet" method="get">
  <label for="name">名前:</label>
  <input type="text" id="name" name="name">
  <input type="submit" value="送信">
</form>

このフォームから送信されたnameの値をRailsのコントローラーで受け取るには、次のようにします。

class GreetingsController < ApplicationController
  def greet
    @name = params[:name]
    render plain: "こんにちは、#{@name}さん!"
  end
end

ここで、params[:name]を使って、フォームで入力された名前を取得し、それを使って挨拶を表示しています。

URLパラメーターの取得

URLパラメーターもparamsで取得できます。例えば、次のようなURLにアクセスしたとします。

/greet?name=John

この場合も、params[:name]Johnを取得することができます。

class GreetingsController < ApplicationController
  def greet
    @name = params[:name]
    render plain: "こんにちは、#{@name}さん!"
  end
end

paramsの種類

paramsは、送信されたデータの種類によっていくつかの異なる形で値を格納します。主なものとして、ルートパラメーター、クエリパラメーター、フォームパラメーターがあります。

ルートパラメーター

URL内で動的に変化する部分をルートパラメーターとして指定することができます。例えば、/users/:idのように設定されたURLで、idがルートパラメーターとなります。

# config/routes.rb
get '/users/:id', to: 'users#show'

この場合、params[:id]でユーザーIDを取得できます。

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end

クエリパラメーター

URLの?key=valueの形式で送られたデータは、クエリパラメーターとしてparamsに格納されます。例えば、/search?query=rubyというURLでは、params[:query]rubyを取得できます。

class SearchController < ApplicationController
  def index
    @results = SearchService.search(params[:query])
  end
end

フォームパラメーター

フォームから送信されたデータは、paramsに格納されます。フォームのinputタグやtextareaタグなどの名前属性を使ってデータを取得します。

<form action="/submit" method="post">
  <label for="username">ユーザー名:</label>
  <input type="text" id="username" name="username">
  <input type="submit" value="送信">
</form>
class SubmissionsController < ApplicationController
  def create
    @username = params[:username]
    render plain: "ユーザー名: #{@username}"
  end
end

実務で役立つparamsの活用方法

paramsは、単にデータを取得するだけでなく、実務において様々な場面で役立ちます。例えば、ユーザー認証やアクセス制限、ページネーションなどでparamsを活用することができます。

ページネーション

データを複数ページに分けて表示する際、ページ番号をクエリパラメーターとして受け取ることがあります。次のようにparams[:page]を使ってページ番号を取得し、ページネーションを実現できます。

class ArticlesController < ApplicationController
  def index
    @articles = Article.paginate(page: params[:page], per_page: 10)
  end
end

ユーザー認証

ユーザーの認証情報をparamsから取得して処理することも一般的です。例えば、ログインフォームから送信されたemailpasswordを使ってユーザーを認証する場合です。

class SessionsController < ApplicationController
  def create
    user = User.find_by(email: params[:email])
    if user && user.authenticate(params[:password])
      session[:user_id] = user.id
      redirect_to root_path
    else
      render :new
    end
  end
end

まとめ

paramsはRailsの重要な機能であり、ユーザーから送られたデータを扱うために欠かせません。この記事では、paramsの基本的な使い方や、実務での活用例を紹介しました。paramsをうまく使うことで、Webアプリケーションの動的なコンテンツ生成やユーザー入力の処理が簡単にできます。

Railsのparamsをマスターして、より効率的なWeb開発を目指しましょう!

Rubyをマスターしよう

この記事で学んだRubyの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。