Я читал подобные вопросы, но многие ответы устарели или не являются достаточно четкими для меня.
Я хотел бы смочь просто сделать что-то как (в действии контроллера):
respond_to do |format|
format.html
format.csv
end
Я знаю, что мне затем было бы нужно представление, такое как action.csv.erb
Таким образом, мои вопросы:
1) Что делает я должен настроить в направляющих, чтобы позволить этому происходить в целом.
2) Как я должен установить представление CSV для отображения некоторых основных полей из модели?
ОБНОВЛЕНИЕ:
Таким образом, я попытался пойти путем запятой, я установил и vendored драгоценный камень.
Затем согласно чтению меня, я бросил это в свою модель (настроенный к моим потребностям):
comma do
user_id 'User'
created_at 'Date'
name 'Name'
end
Я затем бросил это в управление для индексного действия (согласно readme):
format.csv { render :csv => MyModel.limited(50) }
Затем при доступе к индексу (не в формате CSV) я получаю следующую ошибку Исключения ActionController:
неопределенный метод 'запятая' для
Таким образом я погуглил это, и я считал, что должен поместить, требуют 'запятой' в моей модели.
После выполнения этого я обновился (моя локальная индексная страница), и ошибка, измененная на:
никакой такой файл для загрузки - запятая
Таким образом в этой точке я решил, что она не должна находить файлы запятой, очевидно. Таким образом, я скопировал файлы с vendored папки драгоценного камня запятой, от папки lib запятой, к папке lib направляющих. Я затем обновил страницу и приземлился на эту ошибку:
неинициализированная постоянная Ошибка
Затем я в значительной степени сдался.
Ошибки от трассировки были:
/Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:in
load_missing_constant' /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in
const_missing'/Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:92:in 'const_missing'
Другие примечания, я уже установил FasterCSV
Надежда это - достаточно информации :)
Я предлагаю взглянуть на comma. Она работает очень хорошо и позволяет обрабатывать вещи на уровне модели, в отличие от уровня представления.
Взгляните на FasterCSV.
csv_string = FasterCSV.generate do |csv|
cols = ["column one", "column two", "column three"]
csv << cols
@entries.each do |entry|
csv << [entry.column_one, entry.column_two, entry.column_three ]
end
filename = "data-#{Time.now.to_date.to_s}.csv"
end
send_data(csv_string, :type => 'text/csv; charset=utf-8; header=present', :filename => filename)