From 035b2399ca5a444170bf9016700a26e5501c36c3 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Mon, 20 Feb 2017 20:54:06 +1300 Subject: [PATCH] DRY seeds controller --- app/controllers/seeds_controller.rb | 72 +++++++++-------------------- 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/app/controllers/seeds_controller.rb b/app/controllers/seeds_controller.rb index eaed1e6c3..11b47098e 100644 --- a/app/controllers/seeds_controller.rb +++ b/app/controllers/seeds_controller.rb @@ -1,6 +1,9 @@ class SeedsController < ApplicationController before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource + respond_to :html, :json + respond_to :csv, only: :index + respond_to :rss, only: :index # GET /seeds # GET /seeds.json @@ -8,31 +11,15 @@ class SeedsController < ApplicationController @owner = Member.find_by(slug: params[:owner]) @crop = Crop.find_by(slug: params[:crop]) @seeds = seeds(owner: @owner, crop: @crop) + @filename = csv_filename - respond_to do |format| - format.html # index.html.erb - format.json { render json: @seeds } - format.rss { render layout: false } # index.rss.builder - format.csv do - if @owner - @filename = "Growstuff-#{@owner}-Seeds-#{Time.zone.now.to_s(:number)}.csv" - @seeds = @owner.seeds.includes(:owner, :crop) - else - @filename = "Growstuff-Seeds-#{Time.zone.now.to_s(:number)}.csv" - @seeds = Seed.includes(:owner, :crop) - end - render csv: @seeds - end - end + respond_with(@seeds) end # GET /seeds/1 # GET /seeds/1.json def show - respond_to do |format| - format.html # show.html.erb - format.json { render json: @seed } - end + respond_with(@seed) end # GET /seeds/new @@ -42,11 +29,7 @@ class SeedsController < ApplicationController # using find_by_id here because it returns nil, unlike find @crop = Crop.find_or_initialize_by(id: params[:crop_id]) - - respond_to do |format| - format.html # new.html.erb - format.json { render json: @seed } - end + respond_with(@seed) end # GET /seeds/1/edit @@ -56,50 +39,31 @@ class SeedsController < ApplicationController # POST /seeds # POST /seeds.json def create - params[:seed][:owner_id] = current_member.id @seed = Seed.new(seed_params) - - respond_to do |format| - if @seed.save - format.html { redirect_to @seed, notice: "Successfully added #{@seed.crop} seed to your stash." } - format.json { render json: @seed, status: :created, location: @seed } - else - format.html { render action: "new" } - format.json { render json: @seed.errors, status: :unprocessable_entity } - end - end + @seed.owner = current_member + flash[:notice] = "Successfully added #{@seed.crop} seed to your stash." if @seed.save + respond_with(@seed) end # PUT /seeds/1 # PUT /seeds/1.json def update - respond_to do |format| - if @seed.update(seed_params) - format.html { redirect_to @seed, notice: 'Seed was successfully updated.' } - format.json { head :no_content } - else - format.html { render action: "edit" } - format.json { render json: @seed.errors, status: :unprocessable_entity } - end - end + flash[:notice] = 'Seed was successfully updated.' if @seed.update(seed_params) + respond_with(@seed) end # DELETE /seeds/1 # DELETE /seeds/1.json def destroy @seed.destroy - - respond_to do |format| - format.html { redirect_to seeds_url } - format.json { head :no_content } - end + respond_with(@seed) end private def seed_params params.require(:seed).permit( - :owner_id, :crop_id, :description, :quantity, :plant_before, + :crop_id, :description, :quantity, :plant_before, :days_until_maturity_min, :days_until_maturity_max, :organic, :gmo, :heirloom, :tradable_to, :slug) end @@ -113,4 +77,12 @@ class SeedsController < ApplicationController Seed end.includes(:owner, :crop).paginate(page: params[:page]) end + + def csv_filename + if @owner + "Growstuff-#{@owner}-Seeds-#{Time.zone.now.to_s(:number)}.csv" + else + "Growstuff-Seeds-#{Time.zone.now.to_s(:number)}.csv" + end + end end