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