Генерируйте файл CSV от направляющих

Я читал подобные вопросы, но многие ответы устарели или не являются достаточно четкими для меня.

Я хотел бы смочь просто сделать что-то как (в действии контроллера):

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

Надежда это - достаточно информации :)

11
задан Elliot 19 March 2010 в 02:03
поделиться

2 ответа

Я предлагаю взглянуть на comma. Она работает очень хорошо и позволяет обрабатывать вещи на уровне модели, в отличие от уровня представления.

11
ответ дан 3 December 2019 в 05:57
поделиться

Взгляните на 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)  
6
ответ дан 3 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: