J'essaie de sauvegarder un objet contenant une recette et plusieurs ingrédients. Les données proviennent de mon application angulaire 2 qui passe l'objet en JSON. L'application My Rails 5 api recevra l'objet recette et l'enregistrera directement dans ma base de données en utilisant les paramètres forts. En ce moment je peux enregistrer l'objet de recette dans la base de données mais pour une raison quelconque les ingrédients à l'intérieur ne sont pas sauvés. J'ai vérifié la documentation des rails et je n'ai trouvé aucun problème avec mon code actuel. Toute réflexion sera apprécié.Rails 5 paramètres forts avec plusieurs attributs imbriqués
recipe.rb
class Recipe < ApplicationRecord
has_many :ingredients
accepts_nested_attributes_for :ingredients
end
ingredient.rb
class Ingredient < ApplicationRecord
belongs_to :recipe
end
recipe_controller.rb
def create
@recipe = Recipe.new(recipe_params)
if @recipe.save
render json: @recipe, status: :created, location: @recipe
else
render json: @recipe.errors, status: :unprocessable_entity
end
end
def recipe_params
params.require(:recipe).permit(:name , :description, :imagePath, ingredients_attributes: [ :id, :name, :amount])
end
mon journal de la console
Started POST "/recipes" for ::1 at 2017-01-09 11:40:44 +0900
ActiveRecord::SchemaMigrationLoad(0.3ms)SELECT`schema_migrations`.* FROM `schema_migrations`
Processing by RecipesController#create as HTML Parameters: {"name"=>"Spaghetti", "imagePath"=>"http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg", "description"=>"Delicious spaghetti", "ingredients"=>[{"name"=>"Tomato", "amount"=>1}, {"name"=>"Pasta", "amount"=>1}], "recipe"=>{"name"=>"Spaghetti", "description"=>"Delicious spaghetti", "imagePath"=>"http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg"}}
(0.1ms) BEGIN
SQL (0.2ms) INSERT INTO `recipes` (`name`, `description`, `imagePath`, `created_at`, `updated_at`) VALUES ('Spaghetti', 'Delicious spaghetti', 'http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg', '2017-01-09 02:40:44', '2017-01-09 02:40:44')
(0.7ms) COMMIT
Completed 201 Created in 9ms (Views: 1.0ms | ActiveRecord: 2.1ms)
N'est-ce pas sur les paramètres forts? Voici un bon post [comment autoriser tableau dans les paramètres forts] (http://jaketrent.com/post/permit-array-rails-strong-parameters/) – matiss
J'ai déjà essayé, il ignore simplement les ingrédients à l'intérieur de l'objet de la recette. – Johji