Files
growstuff/app/controllers/gardens_controller.rb

74 lines
1.7 KiB
Ruby

class GardensController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
after_action :expire_homepage, only: [:create, :delete]
load_and_authorize_resource
respond_to :html, :json
# GET /gardens
# GET /gardens.json
def index
@owner = Member.find_by(slug: params[:owner])
@show_all = params[:all] == '1'
@gardens = gardens
respond_with(@gardens)
end
# GET /gardens/1
# GET /gardens/1.json
def show
@current_plantings = @garden.plantings.current
.includes(:crop, :owner)
.order(planted_at: :desc)
@finished_plantings = @garden.plantings.finished
.includes(:crop)
.order(finished_at: :desc)
respond_with(@garden)
end
# GET /gardens/new
# GET /gardens/new.json
def new
@garden = Garden.new
respond_with(@garden)
end
# GET /gardens/1/edit
def edit; end
# POST /gardens
# POST /gardens.json
def create
@garden.owner_id = current_member.id
flash[:notice] = I18n.t('gardens.created') if @garden.save
respond_with(@garden)
end
# PUT /gardens/1
# PUT /gardens/1.json
def update
flash[:notice] = I18n.t('gardens.updated') if @garden.update(garden_params)
respond_with(@garden)
end
# DELETE /gardens/1
# DELETE /gardens/1.json
def destroy
@garden.destroy
flash[:notice] = I18n.t('gardens.deleted')
redirect_to(gardens_by_owner_path(owner: @garden.owner))
end
private
def garden_params
params.require(:garden).permit(:name, :slug, :description, :active,
:location, :latitude, :longitude, :area, :area_unit)
end
def gardens
g = @owner ? @owner.gardens : Garden.all
g = g.active unless @show_all
g.joins(:owner).order(:updated_at).paginate(page: params[:page])
end
end