mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-10-30 10:49:03 -04:00
* Add comment support for plantings - Add polymorphic comments association, subject, and author methods to Planting. - Add comments_count column migration for Planting counter cache. - Update CommentsController and comments view templates to support Planting. - Render comments list and form on Planting show view. - Add specs for Planting comments in models, controllers, and requests. Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com> * put 4.0.7 back * Opt comments on posts into record-page styling temporarily * Drop hr * Flatten comments * Update schema --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Brenda Wallace <brenda@wallace.net.nz>
71 lines
1.7 KiB
Ruby
71 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class CommentsController < ApplicationController
|
|
before_action :authenticate_member!, except: %i(index)
|
|
load_and_authorize_resource
|
|
respond_to :html, :json
|
|
respond_to :rss, only: :index
|
|
responders :flash
|
|
|
|
def index
|
|
@comments = Comment.order(created_at: :desc).paginate(page: params[:page])
|
|
respond_with(@comments)
|
|
end
|
|
|
|
def new
|
|
@commentable = find_commentable
|
|
@comment = Comment.new
|
|
if @commentable
|
|
@comments = @commentable.comments
|
|
respond_with(@comments)
|
|
else
|
|
redirect_to(request.referer || root_url,
|
|
alert: "Can't post a comment on a non-existent commentable")
|
|
end
|
|
end
|
|
|
|
def edit
|
|
# TODO: Why does this need a collection of comments?
|
|
@comments = @comment.commentable.comments
|
|
@commentable = @comment.commentable
|
|
end
|
|
|
|
def create
|
|
@comment = Comment.new(comment_params)
|
|
@commentable = @comment.commentable
|
|
@comment.author = current_member
|
|
@comment.save
|
|
respond_with @comment, location: @commentable
|
|
end
|
|
|
|
def update
|
|
@comment.update(body: comment_params['body'])
|
|
respond_with @comment, location: @comment.commentable
|
|
end
|
|
|
|
def destroy
|
|
@commentable = @comment.commentable
|
|
@comment.destroy
|
|
respond_with(@commentable)
|
|
end
|
|
|
|
private
|
|
|
|
def find_commentable
|
|
return unless params[:comment]
|
|
|
|
case params[:comment][:commentable_type]
|
|
when 'Photo'
|
|
Photo.find(params[:comment][:commentable_id])
|
|
when 'Post'
|
|
Post.find(params[:comment][:commentable_id])
|
|
when 'Planting'
|
|
Planting.friendly.find(params[:comment][:commentable_id])
|
|
end
|
|
end
|
|
|
|
def comment_params
|
|
params.require(:comment).permit(:body, :commentable_id, :commentable_type)
|
|
end
|
|
end
|