Rails:MVCの流れについて
本日は、Rails記事投稿の一部を学習しました。
ポイント
- モデルの情報は、コントローラーのアクションへ@変数で代入する。 (ビューには直接書かない)
- params[:id]はURL側の数値を代入する。
- find_byはモデルから情報取得する。
- params+find_byの組み合わせでURLとモデルを紐付ける。
url:@@@xxxx/1 #route.rb get 'xxxx/:id' => 'zzz#yyy' # get 'xxxx/1' => 'zzz#yyy' # zzz_controller.rb def yyy params[:id] # {id:1}のハッシュが代入される end # yyy.html.erb <%= @id%> >1 # -------------------------------------------------- # zzz_controller.rb def yyy @post = Post.find_by(id: params[:id]) # params[:id]と一致するidデータをPostモデルから取得する。 end # yyy.html.erb <%= @post.content%> >hello Rails <%= @post.name%> >Ken # -------------------------------------------------- # zzz_controller.rb def aaa # Postモデルを全取得し、変数postsへ代入する。 @posts = Post.all end def yyy # params[:id]と一致するidデータをPostモデルから取得する。 @post = Post.find_by(id: params[:id]) end # zzz_controller.rb # 変数posts(=Post.all)の配列を変数postへ代入し、each文で一つずつ取り出す。 <% @posts.each do |post|%> # link_toでaタグ作成。 # 'post.content'の内容をビューへ表示。 # #{}で変数展開。postのidを取得してリンクとする。 <%= link_to(post.content,'posts/#{post.id}')%> <% end %> # route.rb # get 'xxxx/:id' => 'zzz#yyy' # zzz_controller.rb # => def yyy # @post = Post.find_by(id: params[:id]) # end # => yyy.html.erb # --------------------------------------------------
今回の学習で、MVC(モデル/ビュー/コントローラ)の流れを少しずつ理解できました。
今後も引き続き学習していきます。
最後まで読んでいただきありがとうございました。
学習時間目標 :1,000
本日の学習時間:3
目標時間まで :954