Очаквам това, което всъщност виждате там, да е името на изгледа без .erb, а не непременно действието на контролера.
Ако искате това ниво на контрол, има три неща, които можете да направите.
- Използвайте извикването send_data от вашия контролер с данни, разделени с табулатори, както е показано в релсите, предадени с опцията filename:
e.g.
class ProductsController < ApplicationController
def index
@products = Product.order(:name)
respond_to do |format|
format.html
format.csv { send_data @products.to_csv }
format.xls { send_data @products.to_csv(col_sep: "\t"), filename: 'your_file_name.xls'}
end
end
end
Има проблеми с този подход, както и със стария подходящ език spreadsheetML, който railscast въвежда, но ако вашата потребителска база е заключена в MS-OFFICE, не мисля, че някой ще забележи.
- Като алтернатива можете да използвате скъпоценен камък като acts_as_xlsx или axlsx_rails, които консумират скъпоценния камък axlsx. Тези инструменти генерират валидирани xlsx данни (известни също като Office Open XML / ECMA-376 - или това, което MS използва от Office 2007...) и имат доста добра оперативна съвместимост с друг модерен софтуер за електронни таблици като Numbers, GoogleDocs, LibraOffice. Сигурен съм, че сте забелязали всички коментари, свързани с това в railscast.
Знам, защото аз съм авторът или axlsx, и тези ограничения, както и липсата на стил, диаграми и валидиране, какво ме накара да авторствам axlsx на първо място.
Повече информация: axlsx: https://github.com/randym/axlsx
acts_as_xlsx: http://axlsx.blogspot.jp/2011/12/using-actsasxlsx-to-generate-excel-data.html
- Напишете свой собствен отговор/изобразител
axlsx_rails също е чудесен пример за това как да създадете свой собствен рендър и отговор, така че да можете да използвате стандартния изглед на релси, но да преименувате файла, който се изтегля.
https://github.com/straydogstudio/axlsx_rails/blob/master/lib/axlsx_rails/action_controller.rb
person
randym
schedule
24.07.2012