class ThreadPostsController < ApplicationController before_action :set_thread # GET /api/threads/:thread_id/posts def index sort = params[:sort].presence_in(['created_at', 'score']) || 'created_at' order = params[:order].presence_in(['asc', 'desc']) || 'desc' posts = @thread.posts .select('posts.*, (good - bad) AS score') .order("#{ sort } #{ order }") render json: posts end # POST /api/threads/:thread_id/posts def create post = @thread.posts.new(post_params) if post.save render json: post, status: :created else render json: { errors: post.errors.full_messages }, status: :unprocessable_entity end end private def set_thread @thread = Topic.find(params[:thread_id]) end def post_params params.require(:post).permit(:name, :body, :password) end end