|
- 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
|