ProgateでRuby on Rails5 を学習しています。
TwitterのようなSNSサービスを作ってみましょう、という練習です。
Controller内の変数@postについて2点教えていただきたいことがあります。
class PostsController < ApplicationController def index # 一覧表示 @posts = Post.all.order(created_at: :desc) end def show #投稿詳細 @post = Post.find_by(id: params[:id]) end def new #新規作成 end def create @post = Post.new(content: params[:content]) @post.save redirect_to("/posts/index") end end
①showのアクションとcreateのアクションに変数@postが定義されていますが、
それぞれ別のアクションの中なので同じ名前なだけの別の変数という理解で合っているでしょうか?
②showアクションの中の変数@post(と、indexアクションの中の@postsをhtmlでeach文を使って定義した変数post)は、データベースからそれぞれ代入してきていますが、
createアクション内の変数@postは新たなインスタンスを作成したものを代入、それをデータベースに保存しています。
データベースに保存されているレコードはそもそも全てインスタンスであり、
そのインスタンスを取り出してindexやshowのアクションで表示している、ということでしょうか?
index, showのアクションとcreateのアクションとで変数postとデータベースの矢印の向きが反対になっているようで混乱しています。
わかりにくく申し訳ないのですが、よろしくおねがいします(TT)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/24 07:15