菊川大介(Daisuke Kikukawa)の個人日記

日々の学びを書いていきます

RailsでURLからidを取得する方法

Railsのparamsについての基礎が抜けていたので備忘録としてメモです💦
もしかしたら間違っているところもあるかもしれないので、その際は優しく指摘頂けると幸いです🙇🏼‍♂️

find_byメソッドの使い方

特定のidの投稿を取得するためにfind_byを使う

post = Post.find_by(id:3)

のような感じ

こうすることによってデータベースから特定のidを持った値を取得できる

URLにidを含める 方法

ルーティングをいじっていく

get "posts/:id" => "post#show"

こうすることで特定のidを持った投稿の詳細ページに飛べる

params の使い方

viewファイルのアクション内で@idのような形でインスタンス変数を作ってあげる そこにparams[:id]を代入する

@id = params[:id]

のような感じ
viewファイルに<%= @id %>とすれば、idを表示できる この考え方を応用して、

@post = Post.find_by(id: params[:id])

のようにfind_byparams の合わせ技でURLに含まれるidを持った値を取得できる
例えば@postを用いて<%= @post.content %>とすれば指定したidの内容を表示できる(contentカラムが存在する場合)

link_toについて

link_to(リンクテキスト, リンク先URL)

フォームの入力内容を受け取る方法

フォームから入力内容を受け取る際もparamsを用いて、

@post = Post.new(content:params[:content])

と取得できる
paramsの後に指定する名前は<textarea>などのフォームについているname=" "と紐づく

form_tag

Railsで投稿フォームを作成する場合にform_tagを用いると楽ができる
全体をform_tagで囲み、その中に投稿用のHTMLを書く

<%= form_tag('/posts/create') do %>
   (中身)
<textarea></textarea>
<input type="submit" value="投稿する">
<% end %>