parametersについて

パラメーターとは

ユーザーからの情報をサーバー側へ伝えるために格納される箱のようなものです。

ハッシュのように、キーとバリューによって値を管理しています。

 

下の画像はターミナルのログに出ているパラメーターのスクショです。

上から順に、

①productsテーブルのid4番の詳細ページを開いた時のパラメーター、

②そのproductsに対するレビュー投稿ページを開いた時のパラメーター、

③レビューを投稿した時のパラメーターです。

 

gyazo.com

 

 

 

 

パラメーターとして情報を渡す方法

以下の2つの方法があります。

・URLの一部として送る方法(httpメソッドがgetの時)

・フォームを通じて送る方法(httpメソッドがpostの時)

 

httpメソッドがgetの時

httpメソッドがgetの時には、パラメーターはURLの一部として送ることが出来ます。

このように、URLの一部として送られるパラメーターを「クエリ文字パラメーター」と言います。

 

 

ルーティングを以下のように設定し、

get '/products/:id => 'products#show'

ビューにリンクを以下のように設定してあげることで、

<a href="/products/<%= product.id %>">

リンクをクリックした際、このようなパラメーターを渡してあげることが出来ます。

Parameters: {"id"=>"4"}

 

 

httpメソッドがpostの時

httpメソッドがpostの時には、パラメーターはフォームを通じて送る事が出来ます。

このようにフォームを通じて送られるパラメーターを「POSTデータ」と言います。

 

以下のようにフォームを設定してあげる事で、

<%= form_for [@product, @review] do |f| %>
 <%= f.label :評価, style: { 'margin-right' => 8 } %>
 <%= f.number_field :rate, placeholder: '評価', value: 1, max: 10, min: 1, html: { class: "search__query", style: 'text-align: right;'} %>
 <%= f.text_area :review, placehoder: 'レビューを書いてね!', style: 'width: 100%;height: 300px;' %>
 <%= f.submit "送信" %>
<% end %> 

フォームを送信した際、このようなパラメーターを渡してあげる事ができます。

Parameters: {"utf8"=>"✓",

"authenticity_token"=>"qzJ9mKNqdsvhC2Zww8HNiBYpa1OZ/6CPQxgLGvWZzgpYy4r6IDhJxcWZ+6waHhrHGbFAFF3zXC4Xoh+vFhkIqQ==",

"review"=>{"rate"=>"10", "review"=>"とても面白い!"},

"button"=>"",

"product_id"=>"4"}

 

 

paramsとは

パラメーターの値を取得するためのメソッドです。

params[:キーの名前]

としてあげることで、指定したパラメーターの値を取得することができます。

 

showアクションへのリンクをクリックし、以下のようなパラメーターが渡されているときに、

Parameters: {"id"=>"4"}

 以下のようにコントローラーのアクション内でparamsメソッドを使うことで、今回の例では4と言うパラメーターの値を取得する事ができます。

class products_controller < application_controller

 def show

   @product = Product.find(params[:id])

 end

end