J'essaie de comprendre comment importer un fichier CSV pour créer de nouveaux enregistrements et créer les associations appropriées.Rails CSV import - association paramètres
J'ai 3 modèles:
1) agriculteurs (has_many: fermes)
2) Ferme (has_many: cultures, belongs_to: agriculteur)
3) cultures (belongs_to: ferme)
L'objectif est que l'utilisateur crée chaque batterie manuellement, puis importez les cultures via un fichier CSV. Je n'arrive pas à comprendre comment passer le farm_id aux récoltes téléchargées, créant l'association.
L'action d'importation sur le contrôleur des cultures:
def import
Crop.import(params[:file], params[:farm_id])
redirect_to root_url, notice: "Crops imported."
end
La méthode d'importation dans le modèle de récolte:
def self.import(file, farm)
CSV.foreach(file.path, headers: true, encoding:'iso-8859-1:utf-8') do |row|
row["farm_id"] = farm
Crop.create! row.to_hash
end
end
Le formulaire pour le téléchargement sur les fermes # afficher la page:
#@farm = Farm.find(params[:id])
<%= form_tag import_crops_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "import CSV" %>
Comment ça va? envoyer sur @ farm.id sur la page # show des fermes pour importer # cultures avec le fichier?
Est-il préférable de faire cela à travers le formulaire - ou d'une autre manière?
Jon, merci - C'était un problème de routage votre imbrication suggérée est fixée. Ma seule préoccupation maintenant est que je niche trop de choses. Est-ce une mauvaise pratique? 'ressources: les fermes font ressources: les cultures font collection {post: import} fin fin' – user1510700