プログラミング未経験の初心者ですが、少し前にProgateのRuby on Railsコースを終わりました。
Railsチュートリアルをしながら復習してみると、Progateをやっていた時はあまりピンと来なかったけど、今なら少し理解できることが増えたので、気づいた点をまとめていきたいと思います。
Progateしているけど、ピンと来ていないな、ここ分からないなと思っている方のお役に立てば幸いです。
paramsとは何か【コースⅢ】
Railsコースで頻出するparamsですが、正直「わかるような、わからないような...」と思っていました。
平たく言うと、
paramsはURLから送られてきた値やフォームで入力した値をparams[:パラメーター名]
で取得するメソッドです。
2020/6/20 とても参考にしたページのURLを追記します
https://note.com/sakusaku34/n/nc143e418b700
例をあげると投稿内容の詳細ページの場合だとこのような使い方になります。
def show
@post = Post.find_by(id: params[:id])
end
自分の場合、一つひとつの知識はその時には言っていることは分かるけど、記述していると知識が繋がらなかったので、なるべく分解して要素にするようにしています。例にあげたコードはこんな感じになります。
前提としてこの子たちはアクションといいます。
controllerで定義されるメソッドを指してアクションと呼びます。
引用&参考記事 https://qiita.com/morikuma709/items/5b21e9853c9d6ea70295
- まず、
@post
は変数です。
まずここがピンときていなかった!(致命的) -
@post
を定義して、Postテーブルからidを探します。find_by[id:(id番号)]
で探します。
find_by[id:(id番号)]
はid以外もデータベースから1つの要素のものを探すことができます。(userとか) - このコードは「find_byでidを探す」、と指定しています。
そこから、探したいidは何かを記述します。今回の場合、params[:id]
がそのidにあたります。
このparamsはURLから送られてきた値やフォームで入力した値をparams[:パラメーター名]
で取得するメソッドです。(大事なことなので2回書きました) - つまりどこからかidとして値を送られていて、それを受け取るということになります。
どこからidが送られているのか、
それは、データベースに登録されている固有のidを持ったPostのルーティングからとってきています。
このコードはつまり、「ルーティングで各投稿のデータベースidをURLとしたから、find_by[id:(id番号)]
で、id番号が同じものを探して表示してね」という内容になります。
まとめ
・paramsはURLから送られてきた値やフォームで入力した値をparams[:パラメーター名]
で取得するメソッド
・find_by[id:(id番号)]
はid以外もデータベースから1つの要素のものを探すことができます。
初心者なので認識不足な部分もあるかもしれませんが、ここまでお読みいただきありがとうございます。
修正や訂正ポイントがあればコメントいただけると嬉しいです。