Rails 引数付きでURLアクションを定義する

RailsでURLに引数を持たせるには、ルーティングでパラメータを使います。

  1. ルーティングファイルにパラメータ付きのURLとアクションを定義する。
  2. コントローラファイルにアクションメソッドを実装する。

ステップ1. ルーティングの定義

ルーティングファイルのconfig/routes.rbを開き、パラメータ付きのURLとアクションを定義します。ここではGETリクエストに対応したアクションを定義します。

定義の仕方

get ':コントローラ名/:パラメータ名', :to => 'コントローラ名#アクション名'

URL “http://ホスト/article/パラメータ/” にアクセスがあったときに、articleコントローラのcontentメソッドを呼びます。パラメータは、params[:id]に格納されます。

# config/routes.rb
get 'article/:id', :to => 'article#content'

ステップ2. アクションメソッドの追加

Articleコントローラにcontentメソッドを追加します。ルーティングで定義したパラメータ”:id”は、params[:id]で読み出せます。読み出したパラメータをrenderで描画します。

# app/controllers/article_controller.rb
class ArticleController < ApplicationController
 def content
  render :text => ":id = " + params[:id]
 end
end

動作確認

URL “http://ホスト/article/hello_world”にアクセスし、”:id = hello world”と表示されることを確認します。