パラメーターとは
ユーザーからの情報をサーバー側へ伝えるために格納される箱のようなものです。
ハッシュのように、キーとバリューによって値を管理しています。
下の画像はターミナルのログに出ているパラメーターのスクショです。
上から順に、
①productsテーブルのid4番の詳細ページを開いた時のパラメーター、
②そのproductsに対するレビュー投稿ページを開いた時のパラメーター、
③レビューを投稿した時のパラメーターです。
パラメーターとして情報を渡す方法
以下の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
