[Ruby on Rails] CSV-Ausgabefunktion

Ziel

CSV.gif

Entwicklungsumgebung

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

Annahme

Das Postmodell verfügt über Titel- und Körperspalten Es besteht eine N: 1-Beziehung zum Benutzermodell.

Schreiben Sie zuerst den fertigen Code und dann den Zusatzcode

Abschlusscode

Controller bearbeiten

app/controllers/posts_controller.rb


class PostsController < ApplicationController
  require 'csv'

  def new
    @post = Post.new
    @posts = Post.all
    respond_to do |format|
      format.html
      format.csv do |csv|
        send_posts_csv(@posts)
      end
    end
  end

  private
  def send_posts_csv(posts)
    csv_data = CSV.generate do |csv|
      column_names = %w(Name des Mitwirkenden Titelkörper)
      csv << column_names
      posts.each do |post|
        column_values = [
          post.user.name,
          post.title,
          post.body,
        ]
        csv << column_values
      end
    end
    send_data(csv_data, filename: "Beitragsliste.csv")
  end
end

view

erb:app/views/posts/new.html.erb


<%= link_to "Ausgabe mit csv",new_post_path(format: :csv) %>

Ergänzungscode

controller

app/controllers/posts_controller.rb


class PostsController < ApplicationController
  require 'csv' #← Sei vorsichtig, denn es ist leicht zu vergessen

  def new
    @post = Post.new
    @posts = Post.all
    # respond_to ist eine Methode, die die Verarbeitung gemäß der Anforderung ausführt.
    #Normalerweise wird HTML angefordert, daher wird der Prozess nicht beschrieben.
    #Link anzeigen_Da das Format als csv mit to angegeben ist,
    #Drücken Sie den Link zum Senden_posts_csv(@posts)Wird verarbeitet.
    respond_to do |format|
      format.html
      format.csv do |csv|
        send_posts_csv(@posts)
      end
    end
  end

  private
  def send_posts_csv(posts)
    # CSV.generate ist eine Art CSV-Bibliothek, die Zieldaten automatisch in das CSV-Format konvertiert.
    csv_data = CSV.generate do |csv|
      # %w()Gibt ein durch Leerzeichen getrenntes Array zurück
      column_names = %w(Name des Mitwirkenden Titelkörper)
      # csv << column_names definiert die Namen, die in die Spalten der Tabelle aufgenommen werden.
      csv << column_names
      # column_Definiert die Spaltenwerte, die den Werten zugewiesen werden sollen.
      posts.each do |post|
        column_values = [
          post.user.name,
          post.title,
          post.body,
				]
      # csv << column_valuesh definiert die Werte, die in die Zeilen der Tabelle eingehen.
        csv << column_values
      end
    end
    #Definiert den Dateinamen für die CSV-Ausgabe.
    send_data(csv_data, filename: "Beitragsliste.csv")
  end
end

view

erb:app/views/posts/new.html.erb


<!--Geben Sie das Format als CSV an und antworten Sie dem Controller_Zur Verarbeitung ausführen-->
<%= link_to "Ausgabe mit csv",new_post_path(format: :csv) %>

Recommended Posts

[Ruby on Rails] CSV-Ausgabefunktion
[Ruby on Rails] Paging-Funktion eingeführt
[Ruby on Rails] Implementierung der Kommentarfunktion
[Ruby on Rails] DM, Chat-Funktion
[Ruby on Rails] Suchfunktion (nicht ausgewählt)
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
[Ruby on Rails] Folgen Sie der Funktionsimplementierung: Bidirektional
[Ruby on Rails] Implementierung einer ähnlichen Funktion
[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
Ruby on Rails Implementierung der automatischen Mail-Sendefunktion
[Ruby on Rails] Nachbearbeitungsfunktion (Aktualisieren, Löschen)
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Output Rails Routes als CSV
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
[Ruby on Rails] Asynchrone Kommunikation der Posting-Funktion, Ajax
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
[Ruby on Rails] Post-Score-Ranking-Funktion (gesamte Anzeige)
[Ruby on Rails] Post-Bildvorschau-Funktion in Refile
[Ruby on Rails] Suchfunktion (Modell, Methodenauswahlformel)
[Rails] Implementierung der CSV-Importfunktion
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
Ruby on Rails Einstellung der automatischen E-Mail-Sendefunktion (über Google Mail)
[Ruby on Rails] Lesezeichenfunktion (bevorzugte Registrierung, wie): Eine Richtung
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
Verwendung von Ruby on Rails
[Rails] Implementierung der CSV-Exportfunktion
(Ruby on Rails6) Gepostete Inhalte "löschen"
Ein Hinweis zum Seed-Feature von Ruby on Rails
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Ruby on Rails] Erstellung der Bestätigungsseite
[Ruby on Rails] Implementieren Sie die Anmeldefunktion von add_token_to_users mit API
Ruby On Rails entwickelt Routing-Konflikte
Implementieren Sie die CSV-Download-Funktion in Rails
[Ruby on Rails] Praktische Hilfsmethode
[Ruby on Rails] Stoppen Sie "Looping bis ..."