※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
CRUD(クラッド)とは
Create・Read・Update・Delete のこと
Webアプリケーションの基本的な機能をすべて備えているものを「CRUDアプリ」という
Create
「Create」(POSTリクエスト)
- 記事を作成する
前回の続きに、以下を実装する
newアクション:投稿画面を作成する
:createを定義する
post先のurlを取得するために:create
を書き加える(後述)
resources :articles, only: [:show, :new, :create]
@article = Article.new
app/controller/article_controller.rbに以下を記入
def new
@article = Article.new
end
まだなにも入っていない、空の@articleを作る
フォームタグを作成する
(model:◯◯ , url:◯◯ , method:◯◯ )をそれぞれ指定する
app/views/articles/new.html.erbにコードを追加する
<div class="container">
<%= form_with(model: @articcle, url: articles_path, method: 'post', local: true) do |f| %>
<% end %>
</div>
どのモデルを更新しようとしているのか? → 記事の情報
「@article = Article.new
」によって、まだなにも入っていない@articleが渡される
→ form_with
により@article
が更新される
↓ POSTリクエストを行いたいので、「articles_path
」を指定する
フォームを使うときのメソッドは複数あるので、投稿を保存するときはpostメソッドで指定する
local: true
についてはまだ難しいのでいずれ学習する(らしい)
form_with
を使うときはlocal: true
も使う、と覚えておけば◯
- articleモデルを更新する
- articles_path(articles#create)にPOSTリクエストを送りたい
- 投稿を保存するのはpostメソッドになる
投稿画面を作る
<%= f.text_field :title %>
と記入する
※ 先頭の「f」は「form」の意味
<div class="container">
<%= form_with(model: @article, url: articles_path, method: 'post', local: true) do |f| %>
<div>
<%= f.text_field :title %>
</div>
<% end %>
</div>
↓ 検証で確認すると、railsがうまいこと書き換えてくれている
<div>
<input type="text" name="article[title]" id="article_title">
</div>
フォームヘルパー
<%= f.text_area :content %>
でも出来て、こっちのほうは見た目が大きい
f.text_field
やf.text_area
のことを「フォームヘルパー」と呼ぶ
<%= f.submit '保存' %>
で、「保存」と書かれたボタンができる
<%= f.label :title, 'タイトル' %>
と記入する
<div>
<%= f.label :title, 'タイトル' %>
</div>
<div>
<%= f.text_field :title, class: 'text' %>
</div>
<div>
<%= f.label :content, '内容' %>
</div>
<div>
<%= f.text_area :content %>
</div>
- このとき
label:
は、
カラムと対応させること class
は「class: 'text'
」で
設定できる
railsのルール、書き方を覚えてhtmlに表示できるようにしないといけない
#DAY11