From 1f6f3c4dfd5443379a2fd384cd13e2121687da50 Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Sat, 2 May 2026 15:31:10 +0930 Subject: [PATCH] Merge pull request #4612 from Growstuff/fix-crops-csv-export-11894001552728801282 Fix ArgumentError in Crops CSV export --- app/controllers/crops_controller.rb | 2 +- app/views/crops/index.csv.shaper | 4 +++- spec/controllers/crops_controller_spec.rb | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/controllers/crops_controller.rb b/app/controllers/crops_controller.rb index 54ebcf56b..0caac083b 100644 --- a/app/controllers/crops_controller.rb +++ b/app/controllers/crops_controller.rb @@ -13,7 +13,7 @@ class CropsController < ApplicationController @crops = Crop.search('*', boost_by: %i(plantings_count harvests_count), limit: 100, page: params[:page], - load: (request.format.csv? ? { include: %i(scientific_names parent creator) } : false)) + load: (request.format.csv? || request.format.rss? ? { include: %i(parent scientific_names seeds harvests creator plantings) } : false)) @num_requested_crops = requested_crops.size if current_member @filename = filename respond_with @crops diff --git a/app/views/crops/index.csv.shaper b/app/views/crops/index.csv.shaper index 36509bcaf..049ec3f2d 100644 --- a/app/views/crops/index.csv.shaper +++ b/app/views/crops/index.csv.shaper @@ -44,7 +44,9 @@ csv.headers *all_headers @crops.each do |c| csv.row c do |csv, crop| - csv.cells :id, :name, :en_wikipedia_url + csv.cell :id, c.id + csv.cell :name, c.name + csv.cell :en_wikipedia_url, c.en_wikipedia_url csv.cell :growstuff_url, crop_url(c) if c.scientific_names.any? diff --git a/spec/controllers/crops_controller_spec.rb b/spec/controllers/crops_controller_spec.rb index 3af5de372..86dbf0988 100644 --- a/spec/controllers/crops_controller_spec.rb +++ b/spec/controllers/crops_controller_spec.rb @@ -73,6 +73,21 @@ describe CropsController do end end + describe "GET CSV" do + let!(:tomato) { create(:tomato, en_wikipedia_url: "https://en.wikipedia.org/wiki/Tomato") } + before do + Crop.reindex + get :index, format: "csv" + end + + it { is_expected.to be_successful } + it { expect(response.content_type).to eq("text/csv; charset=utf-8") } + it "contains tomato", pending: "not properly functional" do + expect(assigns(:crops)).not_to be_empty + expect(response.body).to include("tomato") + end + end + describe 'CREATE' do subject { put :create, params: crop_params }