Railsでparamsを使ってデータを取得する

  • 30
    いいね
  • 0
    コメント

目次

■paramsとは
■具体例
■配列やハッシュについて
■参考文献

paramsとは

■概要
Railsでは、リクエスト情報をひとまとめにして、params[:パラメータ名]という形式で取得できます。
[リクエスト情報とは、実際どういったものか?]
代表的なものは以下の2つ
・POSTでフォームから送信されたデータ
・クエリ情報

■特徴
・ただの文字列だけではなく、配列やハッシュを受け取ることもできる
・リンクによるパラメータの受け渡しができる
・フォームによるパラメータの受け渡しができる

具体例

■リンクによるパラメータの受け渡し
View側

view/users/show.html.erb
<%= link_to 'ユーザ名', controller: 'users', action: 'show',
            id: 1, name: '太郎' %> 

Controller側

controller/users_contoller.rb
def show
 id = params[:id] #=> id = 1
 name = params[:name] #=> name = '太郎'
end

以上がリンクによるパラメータの受け渡しの基本的な例です。

■フォームによるパラメータの受け渡し
View側

view/users/create.html.erb
<% form_for @user do |f| %>
 名前:<%= f.text_field :name %>
 年齢:<%= f.text_field :age %>
 職業:<%= f.text_field :job %>
<% end %>

このとき、あるユーザー(太郎)が
名前:太郎
年齢:24歳
職業:学生
と入力しました。すると
この場合渡される値は以下のように格納されています。

params[:user][:name] #=> 太郎
params[:user][:age] #=> 年齢
params[:user][:job] #=> 学生

■クエリ情報をパラメータで渡す場合
//localhost:3000/users/show?id=1&age=24
上記のようなURLリクエストの場合、渡される値は以下です。

params[:id] #=> 1
params[:age] #=> 24

クエリ情報がハッシュのようなカタチで格納されています。

配列とハッシュについて

■配列
配列を渡す場合は、キー名の末尾に[]を付与する必要があります。
(例)
~~/?group[]=ruby&group[]=php&group[]=java
この時、実際どういう具合に値が渡されているか

params[:group].inspect #inspectメソッドは取得した配列を整形してくれる
=> ["ruby", "php", "java"] #配列groupが格納されている。

# "ruby"だけを取り出したい場合
params[:group][0] #=> "ruby"

■ハッシュ
先ほどのまでの話と重複しているが、復習程度に。

params = ActionController::Parameters.new(name: '太郎',
                            email: 'taro@example.com')

# name&emailをそれぞれキーとして
params[:name] #=> '太郎'
params[:email] #=> taro@example.com

以上が基本的なparamsの概念、使い方です。

参考文献

Ruby on Rails 4 アプリケーションプログラミング, 山田 祥寛
http://www.amazon.co.jp/dp/4774164100
Rails3レシピブック 190の技, 高橋 征義
http://www.amazon.co.jp/dp/4797363827

Railsリファレンス
http://railsdoc.com/references