IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Formulaire imbriqué [Débutant(e)]


Sujet :

Ruby on Rails

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Formulaire imbriqué
    Bonsoir tout le monde,

    Je suis confronté à une initialisation capricieuse pour un formulaire...

    J'ai crée trois objets métiers:
    Un objet projet qui contient des releases qui eux mêmes contiennent des stories

    Ils sont liés de la façon suivante:
    Projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    attr_accessible :releases
    has_many :releases, :dependent => :destroy
    Release
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    attr_accessible :stories_attributes, :stories
     
    belongs_to :projet
    has_many :stories
     
    accepts_nested_attributes_for :stories, :allow_destroy => :true
    Story
    Et les formulaires
    releases/_form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <%= simple_form_for([@projet, @projet.releases.build]) do |release_form| %>
     
       <h2>Stories</h2>
       <%= render :partial => 'storys/form', :locals => {:form => release_form} %>
    <% end %>
    storys/_form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%= form.fields_for :stories do |story_form| %>
        <%= story_form.input :nom, label: 'Nom' %>
    <% end %>
    Et avec tout çà, ma liste de stories est vide au niveau de ma page html ou sinon j'ai l'erreur suivante

    ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: storys):
    app/controllers/releases_controller.rb:5:in `create'

    J'accède a ce formulaire via l'adresse:
    http://localhost:3000/projets/5/releases/new

    En espérant que quelqu'un puisse me conseiller

    Merci d'avance

    Cdl

  2. #2
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    En cas d'utilisation de nested attributes, comme API de Rails le suggère, il faut déclarer l'attribut-writer pour l'association:
    accepts_nested_attributes_for(*attr_names)
    Defines an attributes writer for the specified association(s). If you are using attr_protected or attr_accessible, then you will need to add the attribute writer to the allowed list.
    Dans ton cas, il faudra rajouter dans le modèle Project (je suppose que tu crée tout ça à partir de projet, sinon il faudra adapter tes nested modèles et views:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Project < AR
      attr_accessible :releases_attributes #et non pas juste releases !
      has_many :releases, :dependent => :destroy, inverse_of: :project
    accepts_nested_attributes_for :releases, :allow_destroy => :true, inverse_of: :release
    end
    Fais pareil pour d'autres modèles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Release < AR
    attr_accessible :stories_attributes
     
    belongs_to :projet, inverse_of: :releases
    has_many :stories
     
    accepts_nested_attributes_for :stories, :allow_destroy => :true, inverse_of: :release
    end
    Et enfin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Story < AR
    belongs_to :release, inverse_of: :stories
    end

Discussions similaires

  1. [Struts] - Déclenchement d'une action dans un formulaire imbriqué
    Par Dabat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/03/2009, 15h14
  2. Parcour des getElementById dans un formulaire imbriqué ?
    Par DrySs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/10/2007, 19h03
  3. formulaire imbriquer + popup
    Par luan220 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/10/2007, 12h11
  4. Probleme Formulaire imbriques
    Par gloglo dans le forum Struts 1
    Réponses: 10
    Dernier message: 30/08/2006, 20h30
  5. formulaire imbriqué
    Par jani dans le forum Langage
    Réponses: 9
    Dernier message: 18/01/2006, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo