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