Il est facile d'insérer plusieurs autres colonnes de texte, mais j'ai eu du mal car toutes les colonnes d'image sont devenues nulles, voici donc deux méthodes pour saisir plusieurs colonnes d'image à la fois. Je vais.
Dans db / migrate / seed.rb
,
seed.rb
Post.create!(image: /public/uploads/post/image/1/yatoguti.jpg,
park:Parc Tanitoguchi,
outline:Tous ceux qui connaissent Kubo le savent,
location:1-20-14 Kubo, Hino-shi, Tokyo,
access:5 minutes à pied de la gare Kubo sur le monorail)
Et puis rails db: reset
et ensuite rails db: seed
,
=> [#<Post:0x00007fa6c66bc8e8
id: 27,
image: nil,
park: "Parc Tanitoguchi",
outline:
"Tous ceux qui connaissent Kubo le savent.",
location: "10 minutes à pied de la gare de Takahata Fudo sur la ligne Keio en direction de la gare de Hyakusoen",
access: "1024 Takahata, ville de Hino",
created_at: Sun, 02 Aug 2020 14:38:30 JST +09:00,
updated_at: Sun, 02 Aug 2020 14:38:30 JST +09:00,
likes_count: nil,
tag_list: ["#Jouer dans l'eau", "#Athlétique"]>,
#<Post:0x00007fa6c7b48f28
id: 28,
image: nil,
park: "Parc de pluie",
outline: "C'est un parc à la fois lumineux et calme.",
location: "8 sur 881 Hyakuso, Hino City",
access: "3 minutes à pied à l'est de l'arrêt de bus de l'école élémentaire de Misawadai",
created_at: Sun, 02 Aug 2020 14:38:30 JST +09:00,
updated_at: Sun, 02 Aug 2020 14:38:30 JST +09:00,
likes_count: nil,
:...skipping...
De cette manière, la ** colonne image devient nulle ** si seule l'URL est décrite directement.
Réécrivez la description de l'URL de l'image dans la colonne d'image comme suit.
seed.rb
Post.create!(image: File.open("#{Rails.root}/public/uploads/post/image/1/yatoguti.jpg "),
park:Parc Tanitoguchi,
outline:Tous ceux qui connaissent Kubo le savent,
location:1-20-14 Kubo, Hino-shi, Tokyo,
access:5 minutes à pied de la gare Kubo sur le monorail)
La description de la colonne image,
Post.create!(image: /public/uploads/post/image/1/yatoguti.jpg,
ne pas,
Post.create!(image: File.open("#{Rails.root}/public/uploads/post/image/1/yatoguti.jpg "),
Changer en. Puis rails db: reset
et ensuite rails db: seed
.
/ image / 1 / yatoguti.jpg
contient réellement l'image.Avec cela, les données initiales de départ peuvent être entrées en une seule fois!
Étant donné que la saisie initiale des données a réussi avec seed.rb, cette fois, écrivez-la de la même manière avec db / csv_dara / csv_data.csv
et lib / tasks / import_csv.rake
, et essayez-la avec l'importation CSV.
csv_data.csv
image,park,outline,location,access,tag_list
File.open("#{Rails.root}/public/uploads/post/image/6/ajisai.jpg "),Parc Fuyo,C'est un petit parc juste à côté de "Takahata Fudo" à Hino City. Situé sur une colline dans le complexe d'habitation, c'est un lieu de détente pour les enfants locaux. Il y a des balançoires, des toboggans, des barres de fer, des champs de sable et il y a aussi un espace où vous pouvez jouer librement.,714 Takahata, Hino City, Tokyo-21,À 5 minutes à pied de la gare Takahata Fudo,#faire glisser#Barre de fer#Balançoire#Endroit de sable
File.open("#{Rails.root}/public/uploads/post/image/8/hohoemi.jpg "),Parc du sourire,Le monticule de béton est un parc populaire. Un tunnel qui court verticalement et horizontalement à l'intérieur du monticule, un itinéraire d'alpinisme avec un fermoir à l'extérieur, et un large toboggan et une zone de sable sont intégrés, pour que vous puissiez profiter d'une petite aventure.,2-31-6, Nanpei, Hino-shi,À 5 minutes à l'est de l'arrêt de bus Kitano Kaidoguchi,#faire glisser#Barre de fer#Balançoire
File.open("#{Rails.root}/public/uploads/post/image/7/hodokubo.jpg "),Espace ouvert du quartier Unkubo,Prairies et forêts légèrement en pente. Il n'y a pas d'équipement de jeu, mais vous pouvez grimper aux arbres, glisser sur l'herbe et ramasser des glands. C'est un champ, il est donc normal de se déplacer à mains nues.,3-22-2 Kubo, Hino City,À 5 minutes à pied à l'est de la station Tama Animal Park sur la ligne Keio,#herbe
lib/tasks/import_csv.rake
require 'csv'
namespace :import_csv do
desc "Tâche d'importation des données CSV de la table de publication"
task posts: :environment do
path = File.join Rails.root, "db/csv_data/csv_data.csv"
list = []
CSV.foreach(path, headers: true) do |row|
list << {
image: row ["image"],
park: row["park"],
outline: row["outline"],
location: row["location"],
access: row["access"],
tag_list: row["tag_list"]
}
end
puts "Lancer le processus d'importation"
Post.create!(list)
puts "Importation terminée!!"
end
end
Étant donné que c'est une description que la graine a été initialement entrée, j'ai pensé que l'importation CSV pouvait également être effectuée. Alors ...
rake aborted!
CSV::MalformedCSVError: Illegal quoting in line 2.
/Users/sekishinya/Desktop/park_app/lib/tasks/import_csv.rake:11:in `block (2 levels) in <main>'
Tasks: TOP => import_csv:posts
(See full trace by running task with --trace)
Impossible d'importer en raison d'une erreur. À l'origine, j'ai importé sans la colonne d'image, il n'y a donc aucun doute que la colonne d'image est le problème.
Contrairement au cas de la graine, CSV est traité comme ** toutes les chaînes de caractères **, donc la description est différente.
Par conséquent, réécrivez lib / tasks / import_csv.rake
et db / csv_dara / csv_data.csv
comme suit.
import_csv.rake
require 'csv'
namespace :import_csv do
desc "Tâche d'importation des données CSV de la table de publication"
task posts: :environment do
path = File.join Rails.root, "db/csv_data/csv_data.csv"
list = []
CSV.foreach(path, headers: true) do |row|
list << {
image: File.open("#{Rails.root}/#{row["image"]}"),
park: row["park"],
outline: row["outline"],
location: row["location"],
access: row["access"],
tag_list: row["tag_list"]
}
end
puts "Lancer le processus d'importation"
Post.create!(list)
puts "Importation terminée!!"
end
end
La description de la colonne image de ʻImport_csv.rake`,
image: row ["image"],
ne pas,
image: File.open("#{Rails.root}/#{row["image"]}"),
Changer en.
Ensuite, modifiez la colonne d'image de csv_data.csv
comme suit.
csv_data.csv
image,park,outline,location,access,tag_list
"public/uploads/post/image/8/fuyou.jpg ",Parc Fuyo,C'est un petit parc juste à côté de "Takahata Fudo" à Hino City. Situé sur une colline dans le complexe d'habitation, c'est un lieu de détente pour les enfants locaux. Il y a des balançoires, des toboggans, des barres de fer, des champs de sable et il y a aussi un espace où vous pouvez jouer librement.,714 Takahata, Hino City, Tokyo-21,À 5 minutes à pied de la gare Takahata Fudo,#faire glisser#Barre de fer#Balançoire#Endroit de sable
"public/uploads/post/image/8/hohoemi.jpg ",Parc du sourire,Le monticule de béton est un parc populaire. Un tunnel qui court verticalement et horizontalement à l'intérieur du monticule, un itinéraire d'alpinisme avec un fermoir à l'extérieur, et un large toboggan et une zone de sable sont intégrés, pour que vous puissiez profiter d'une petite aventure.,2-31-6, Nanpei, Hino-shi,À 5 minutes à l'est de l'arrêt de bus Kitano Kaidoguchi,#faire glisser#Barre de fer#Balançoire
"public/uploads/post/image/8/hodokubo.jpg ",Espace ouvert du quartier Unkubo,Prairies et forêts légèrement en pente. Il n'y a pas d'équipement de jeu, mais vous pouvez grimper aux arbres, glisser sur l'herbe et ramasser des glands. C'est un champ, il est donc normal de se déplacer à mains nues.,3-22-2 Kubo, Hino City,À 5 minutes à pied à l'est de la station Tama Animal Park sur la ligne Keio,#herbe
Au moment de l'amorçage, il n'a pas réussi à décrire uniquement l'URL, mais ** à l'inverse, il est préférable d'écrire uniquement l'URL ** pour les données CSV.
Avec cela, nous avons réussi à importer plusieurs images à la fois même avec CSV!
Recommended Posts