2017-10-19 25 views
0

Je suis un nouvel apprenant et besoin d'aide. J'ai deux modèles (que j'ai générés à travers l'échafaudage). Catégorie et produitPasser la demande Post par l'intermédiaire de facteur pour has_many association dans les rails

class Category 
    include Mongoid::Document 
    field :name, type: String 

    has_many :products 
    accepts_nested_attributes_for :products 
end 

class Product 
    include Mongoid::Document 
    include Mongoid::Paperclip 
    include Mongoid::Timestamps::Created 

    field :name, type: String 
    field :description, type: String 
    field :prize ,type: Integer 
    field :category_id 
    field :user_id 

has_mongoid_attached_file :avatar, 
    :styles => { 
     :thumb => "150x150#", 
     :small => "150x150>", 
     :medium => "550x550#{}" } 

belongs_to :user 
belongs_to :category 
end 

Mon contrôleur Catégorie

# POST /categories.json

def create 
    @category = Category.new(category_params) 


    respond_to do |format| 
     if @category.save 
     format.html { redirect_to @category, notice: 'Category was successfully created.' } 
     format.json { render :show, status: :created, location: @category } 
     else 
     format.html { render :new } 
     format.json { render json: @category.errors, status: :unprocessable_entity } 
     end 

    end 


def category_params 
     params.require(:category).permit(:name,product_attributes: [ :name, :description,:prize ,:category_id]) 
    end 

    end 

Mon format JSON

{ 

    "name":"Mens Clothing", 
    "products_attributes": [ 
     { 

      "name":"Denim jeans", 
      "Description": "test test test" 
      "prize":1000, 
      "user_id":1, 
     } 
    ] 
} 

Maintenant, ma question est quand je suis en train de frapper localhost: 3000/categories par le facteur les valeurs ne sont pas enregistrées. De plus, je ne sais pas si mon format json est correct ou non, ou bien mon code de contrôleur de catégorie est correct. Je suis nouveau et essayer de comprendre comment les données sont enregistrées au format JSON pour la relation has_many dans rails.iam obtenir manquant Erreur params

Répondre

1

Vous devez avoir le nom de la ressource de base comme une clé dans votre JSON:

{"category": { 

    "name":"Mens Clothing", 
    "products_attributes": [ 
     { 

      "name":"Denim jeans", 
      "Description": "test test test", # <== Added a comma here 
      "prize":1000, 
      "user_id":1, 
     } 
    ] 
}} 

params.require(:category) indique que vous voulez regarder les paramètres entrants et tirer la valeur de la clé :category, en levant une exception ActionController::ParameterMissing si cette clé n'est pas trouvée.

Si la clé :category est trouvée, sa valeur est transmise à #permit, qui filtre toutes les clés qui ne sont pas incluses dans la liste approuvée.

Étant donné que vous n'aviez pas :category dans vos paramètres, vos journaux doivent refléter une exception ActionController::ParameterMissing.

+0

merci #moveson .but Je reçois toujours cette erreur.ActionController :: ParameterMissing (param est manquant ou la valeur est vide: category): –

+0

S'il vous plaît modifier votre question pour afficher les journaux du serveur à partir de "commencé POST/categories "et se terminant par" Terminé xxx en xxxms ". – moveson

+0

merci l'homme, le problème est résolu en fait j'essayais d'aller chercher des données de facteur .et sur le changement de certains changements à contrôleur créer des actions j'ai eu ce que je voulais. Votre réponse m'a donné une feuille de route à la solution. –