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