【rails】「CREATE」createアクション

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

CRUD(クラッド)とは

Create・Read・Update・Delete のこと

Webアプリケーションの基本的な機能をすべて備えているものを「CRUDアプリ」という


Create

「Create」(POSTリクエスト)

今回、実装したいこと

createアクション:記事を保存する


params.require(:◯◯).permit(:◯◯, :◯◯)

app/controller/article_controller.rbに以下のコードを書く

    private
    def article_params
        params.require(:article).permit(:title, :content)
    end

article_paramsStrong Parameterとも呼ぶ


記事投稿の動作を決める

下記のコードを、前述「private」の上に書く

    def create
        @article = Article.new(article_params)
        if @article.save
            redirect_to article_path(@article)
        else
            render :new
        end
    end

記事を新しく作成する

2行目
@article = Article.new(article_params)

空の「@article」に、新しい投稿「Article.new」のデータ「article_params」を入れる

article_params」には「(:title, :content)」が入っている


新しい投稿を保存する

3行目
if @article.save

@article」に投稿内容が一時的に入っているだけなので、「@article.save」でデータベースに保存する


記事ページに遷移する

3〜4行目
if @article.save
            redirect_to article_path(@article)

”もし”投稿内容が保存”できたら”、保存した記事ページ「article_path(@article)」に遷移「redirect_to」する


投稿画面のままでいる

5〜6行目
        else
            render :new

”もし”投稿内容が保存”できなかったら”、「new.html.erb」(投稿画面)を表示する

↓ 「保存できない」とは、エラーが出てしまうとき

render :newについて長くなったのでこちら


メッセージを表示させる

状況に応じて、以下のメッセージを表示させる

  • 記事の保存ができたとき、「保存できました」
  • 保存に失敗したとき、「保存に失敗しました」
    def create
        @article = Article.new(article_params)
        if @article.save
            redirect_to article_path(@article),
            notice: '保存できました'
        else
            flash.now[:error] = '保存に失敗しました'
            render :new
        end
    end

保存できた場合は、遷移先のhtmlで表示方法や場所の記載も必要になる

#DAY12