Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Rails4でフォームで送信したデータをparamsで受け取る方法

Rails4でフォームを使ってデータを送信し、paramsで受信する方法を確認しました。
 
単純な文字列、配列、ハッシュを指定する方法とその送信データをparamsで受け取る方法をまとめました。
 
1)サンプルコード作成
 
①リソースルート設定
 
$ vi config/routes.rb

  resources :users do
    collection do
      get 'search'
      post 'result'
    end
  end

 
②searchビュー
 
●form_tagヘルパー
 
・CSRF対策としてhiddenフィールドで予測困難なトークンを追加してくれる。
 
例)
<input name="authenticity_token" type="hidden" value="Nn2p・・" />
 
このトークンを設定しないと"ActionController::InvalidAuthenticityToken"のエラーとなる。
 
※CSRF
クロスサイトリクエストフォージェリ(CSRF)は、ユーザーが知らないうちに他のサイトにデータの書込み、変更、削除のリクエストを送らせるタイプの攻撃手法です。
 
$ vi app/views/users/search.html.erb

<%= form_tag 'result' do %>
  string<input type="text" name="string" value="string" />
  ary1<input type="text" name="ary[]" value="ary1" />
  ary2<input type="text" name="ary[]" value="ary2" />
  ary3<input type="text" name="ary[]" value="ary3" />
  hash1<input type="text" name="hash[key1]" value="key1" />
  hash221<input type="text" name="hash[key2][key21]" value="key221" />
  hash222<input type="text" name="hash[key2][key22]" value="key222" />
  <button type="submit" class="btn btn-default">Submit</button>
<% end %>

 
③resultビュー
 
$ vi app/views/users/result.html.erb

<H2>Search Result</H2>
<%= p @string %>
<%= p @ary %>
<%= p @hash %>

 
④コントローラ

  def search
  end
  def result
    @string=params[:string]
    @ary=params[:ary]
    @hash=params[:hash]
  end

 
2)実行結果
 
下記URLにアクセスし、実行した結果を下記に示します。
http://localhost:3000/users/search
 
string
["ary1", "ary2", "ary3"]
{"key1"=>"key1", "key2"=>{"key21"=>"key221", "key22"=>"key222"}}