# frozen_string_literal: true class BlogPostsController < ApplicationController skip_before_action :require_login, only: [:index, :show] before_action :set_blog_post, only: [:show, :edit, :update, :destroy] def index @blog_posts = BlogPost.published .order(created_at: :desc) .page(params[:page]) end def new @blog_post = BlogPost.new end def create @blog_post = BlogPost.new(blog_post_params) @blog_post.user = helpers.current_user if @blog_post.save redirect_to @blog_post, notice: t(".created") else render :new, status: :unprocessable_entity end end def show unless @blog_post.published || @blog_post.user == helpers.current_user redirect_to blog_posts_path, notice: t(".not_found") end end def edit; end def update if @blog_post.update(blog_post_params) redirect_to @blog_post, notice: t(".updated") else render :edit, status: :unprocessable_entity end end def destroy if @blog_post.destroy redirect_to blog_posts_path, notice: t(".deleted") else render :edit, status: :unprocessable_entity end end private def blog_post_params params.require(:blog_post).permit( :title, :content, :summary, :published, :slug, ) end def set_blog_post @blog_post = BlogPost.find_by(slug: params[:id]) end end