はじめに
基本は備忘録
MVCについて役割ごとにまとめる機会があったので整理します。
View
htmlファイル 拡張子がsample.html.erb
新しいページを作成する
(新たなコントローラとviewを作成 + routingの設定)
# localhost:3000/home/topにアクセス可能
# 同じ名前のコントローラがすでにある場合コマンドが使えない
rails generate controller コントローラ名 アクション名
rails g controller posts index
link_to
aタグに変換する。
# Prefixで設定
# rails routesでPrefixを確認
<%= link_to("文字列", post_path) %>
# urlで指定
# /で始める routingに合わせる
# postのroutingの時は{method: "post"}
<%= link_to("文字列", "/posts") %>
パーシャル
共通して使えるファイルを1つにまとめたもの
パーシャルとして使うファイル名は_sample.erb
のように_
から始める
# 呼び出し方 読み込ませる時は「_」がいらない
# 第3引数に post: @postで変数も渡せる
<%= render "dir_name/file_name"%>
formを作成する
# view側の設定
# form_tag(送り先のURL)でフォームの送信先を指定
# textareaのname属性をキーにして、ハッシュでアクションに送る
<%= form_tag("/posts/create") do %>
<textarea name="content"></textarea>
<input type="submit" value="投稿">
<% end %>
Routing
resources :posts
とすることで、基本となる7つのアクションへのルーティングを自動的に設定する
get "URL" => "コントローラ名#アクション名"
get "/" => "home#top" # railsデフォルトのページ無くす
get "about" => "home#about" #home contのaboutを使う
resources :posts # クラッドの7つのアクションを一括設定
# ルーティングは上から実行される 書く順番に気をつける
# 以下の順番はよくない例だが、わかりやすくするためこの順番にしている
get "posts/index" => "posts#index"
get "posts/new" => "posts#new"
post "posts/create" => "posts#create"
get "posts/:id" => "posts#show"
get "posts/:id/edit" => "posts#edit"
post "posts/:id/update" => "posts#update"
post "posts/:id/destroy" => "posts#destroy"
URLにidを含ませる方法は下記
# view側のlinkのurlにidを混ぜる
## post.idの部分がparamsにハッシュで保存される
<%= link_to(post.content, "/posts/#{post.id}") %>
設定済みrouting情報を確認
rails routes