初投稿です。
復習でnewとcreateの違いがごちゃごちゃになったときがあったので
備忘録として投稿させて頂きます。
コントローラーアクションnewとcreateの違い
どちらも作成という意味です。
ですが大きな違いは2つあります。
1つ目はidを与えるかどうか
newアクションにはIDを与えません。
また、newアクション専用のページに遷移する事が多いです。
例えばTweetの新規投稿、メルカリなら出品ページとして理解するのが良いと思います。
逆にcreateアクションにはその投稿に対してIDを与える
例えばTweetで投稿したらその時の投稿者や投稿した時間などが記載されていると思います。
これは投稿した瞬間にIDが与えられモデルからDBに保存される様になっています。
ここから、編集したり削除する事もできますがこれらはIDがあるからこそできるのです。
sample.rb
アクションコントローラーの基本的な使い方
newアクション
def new
@tweet = Tweet.new
end
createアクション
def create
Tweet.create(tweet_params)
end
2つ目は HTTPメソッドが違う
。
ターミナルでrake routes(rails routesでも可)で確認したら出てきます。
createアクション
tweets POST /tweets(.:format) tweets#create
newアクション
new_tweet GET /tweets/new(.:format) tweets#new
HTTPメソッドは4種類あります。以下を参照して下さい。
HTTPメソッド どのような時に用いられるリクエストか
GET ページを表示する操作のみを行う時
POST データを登録する操作をする時
PUT データを変更する操作をする時
DELETE データを削除する操作を行う時
以上となります。