0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RailsのViewの役割とRoutingについて

Posted at

はじめに

基本は備忘録
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

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?