Сейчас на сайте

Сейчас 5 гостей онлайн

Поиск

Tag Cloud

Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...

Экспорт данные в формате CSV в приложении Ruby on Rails/Active_Scaffold PDF Печать E-mail
23.11.2011 12:53

Периодически в разного рода админ-интерфейсах требуется возможность перенос данных в формате Excel.Здесь мы увидим, как это реализовать на практике в Rails проекте, использующий plugin Active_Scaffold (www.activescaffold.com) .

Допустим, нам необходимо экспортировать данные об зарегистрированных в системе пользователях.

1. В начале нам нужно отредактировать файл модели User(app/models/user.rb), поместив туда 2 новых метода:

 

def self.csv_header

"ID,Last Name,First Name, Email,Phone"

end

def to_csv

id.to_s << "," << last_name << "," << first_name << "," << email << "," << phone.to_s

end

Первый метод формирует заголовок необходимого типа и формата, а второй конвертирует в строки полученные данные.

1. Затем мы добавляем ссылку на вновь созданный метод «expot_csv» контроллера в файле класса контроллера (app./controllers/user_controller.rb), поместив его в настройки pluginа Active_Scaffold в этом файле:

active_scaffold (:user) do |config|

config.columns = [:id, :first_name, :last_name, :login, :email, :address,:city,:state, :country, :zip,:phone, :fax, :created_at]

config.list.per_page = 10

config.action_links.add 'export_csv', :label => 'Export to Excel', :page => true

list.sorting = {:last_name => 'ASC'}

end

2. Там же описываем новый метод, который получает данные из pluginа Active_Scaffold и генерирует файл типа:

def export_csv

records = find_page().items

return if records.size == 0

data = ""

cls = records[0].class

data << cls.csv_header << "\r\n"

records.each do |inst|

data << inst.to_csv << "\r\n"

end

send_data data, :type => 'text/csv', :filename => cls.name.pluralize + '.csv'

end

4. И наконец, очень важный заключительный шаг. Без этого экспорт данных не сможет работать.

В файл роутера (app/config/router.rb) перед map.resource

вставляем такую строку:

map.connect 'user/export_csv', :controller => 'user', :action =>'export_csv'

Это все.

0
Обновлено 23.11.2011 12:55
 

Добавить комментарий


Защитный код
Обновить