0

J'ai 2 modèles avec une relation HABTM: auteurs et publications.Rails simple_form association ne pas enregistrer à db

En utilisant simple_form, j'ai été capable de créer un formulaire add new publication qui montre tous les auteurs possibles comme cases à cocher. Cependant, ces associations n'épargnent pas à mon db. Je sais que c'est un problème de permis de params, mais je ne suis pas sûr de savoir comment l'écrire correctement. Actuellement, j'ai:

def publication_params 
    params.require(:publication).permit(:publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract) 
end 

Comment puis-je écrire cela pour que les rails peuvent permettre à l'association de la table auteurs (qui a seulement deux columns-- author_id et name) être sauvé aussi?

Répondre

0

Ajouter author_id aux params:

def publication_params 
    params.require(:publication).permit(:author_id, :publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract) 
end 
+0

Cela ne semble pas fonctionner, malheureusement. – League14

+0

pouvez-vous poster ici les params reçus dans le contrôleur? Vous pouvez installer cette gemme https://github.com/pry/pry Et puis ajouter "binding.pry" au début de votre action de contrôleur, puis voir dans les journaux du serveur que vous pouvez évaluer les paramètres –

+0

'def publication_params params.require (: publication) .permit (: publication_id,: id_auteur,: nom,: année_publié,: mois_publié,: jour_publié,: citation,: source,: résumé,) end' – League14

0

Got it! J'ai dû ajouter accepts_nested_attributes_for :authors, :journals dans mon modèle de publication. Puis dans mon publications_controller, je devais changer mes params à:

def publication_params 
    params.require(:publication).permit(:publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract, :author_ids => [], :journal_ids => []) 
end 

Cela m'a permis d'enregistrer de nouvelles associations à mon db, et mis à jour ma table de jointure correctement.