app/controllers/carnival/base_admin_controller.rb in carnival-0.3.1 vs app/controllers/carnival/base_admin_controller.rb in carnival-0.3.2

- old
+ new

@@ -10,18 +10,12 @@ @model = @presenter.model_class @query_service = QueryService.new(table_items, @presenter, @query_form) @thead_renderer = TheadRenderer.new @presenter.fields_for_action(:index), @query_form.sort_column, @query_form.sort_direction respond_to do |format| - format.html do - @records = @query_service.get_query - @paginator = Paginator.new @query_form.page, @query_service.page_count - end - format.csv do - @records = @query_service.records_without_pagination - render csv: @model.model_name.human - end + format.html { index_for_html } + format.csv { index_for_csv } end end [:show, :new, :edit].each do |action| define_method action do @@ -70,9 +64,21 @@ render json: list end protected + + def index_for_html + @records = @query_service.get_query + @paginator = Paginator.new @query_form.page, @query_service.page_count + end + + def index_for_csv + csv_string = @query_service.records_without_pagination.map do |record| + @presenter.csv_for_record(record) + end.join('') + send_data(csv_string) + end def presenter_name(field) field_name = field.split('/').last carnival_mount = Carnival::Config.mount_at "#{carnival_mount}/#{field_name.singularize}_presenter".classify.constantize