1
Help us understand the problem. What are the problem?

posted at

updated at

【Rails】投稿記事の公開・非公開機能を実装する

投稿記事に公開・非公開機能をラジオボタンで実装したので記録を残します!
間違っている箇所があればご指摘頂けると大変助かります(_ _).。o○

前提

・Deviseログイン機能実装済
・Postテーブルにboolean型でカラム追加(今回のカラム名:is_published_flag)

Postモデルに条件式を定義

/app/controllers/posts_controller.rb

class Post < ApplicationRecord
  belongs_to :user

  # 公開・非公開機能
  scope :published, -> {where(is_published_flag: true)}
  scope :unpublished, -> {where(is_published_flag: false)}
   ~省略~
end

scope :スコープの名前, -> { 条件式 }
公開・非公開を見分けられるように条件式を書きます。

Postsコントローラー

/app/controllers/posts_controller.rb

class PostsController < ApplicationController
  before_action :authenticate_user!, only: [:create, :edit, :update, :destroy]

  def index
    @posts = Post.published
  end
~省略~

一覧ページのindexには、公開された記事のみ表示させたいので、@post = Post.publishedとします。

ラジオボタンの実装

true,falseで値を送信
true:publish
false:unpublished

~省略~
       <div>
         <%= f.label :is_published_flag, "公開", value: true %>
         <%= f.radio_button :is_published_flag, 'true' %>
       </div>
       <div>
         <%= f.label :is_published_flag, "非公開", value: false %>
         <%= f.radio_button :is_published_flag,'false' %>
       </div>
~省略~

以上のコードで無事に公開・非公開機能を実装しましたฅ( ˙꒳​˙ ฅ)

・参考記事:https://pikawaka.com/rails/scope

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?