Ich versuche, eine kleine Rezeptwebseite zu bauen. Aber wenn ich versuche, geschachteltes Attribut zu verwenden, um meine Kind (Rezeptzubereitung) Tabelle durch Eltern (Rezept) Aktion zu speichern. Es erzeugt nur IDs für mich ohne irgendwelche Daten darin. Könnte jemand helfen?verschachteltes Attribut in Schienen
Modell für Rezept:
class Recipe < ActiveRecord::Base
has_many :recipe_ingredients
accepts_nested_attributes_for :recipe_ingredients, allow_destroy: true
end
Modell für Recipe_Ingredients:
class RecipeIngredient < ActiveRecord::Base
belongs_to :recipe, inverse_of: :recipe_ingredients
end
Controller für Rezept:
def create
@recipe = Recipe.new(recipe_params)
@recipe.recipe_ingredients.build
***binding.pry***
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(:recipes)
.permit(:name, :category, instruction: [], recipe_ingredients_attributes: [:amount, :ingredient, :measure])
end
`` `
Nachdem ich überprüfen mit Schienen Konsole , mein recipe_params ist wie folgt:
[7] pry(#<RecipesController>)> recipe_params Unpermitted parameter: recipe_ingredients => {"name"=>"an example recipe", "category"=>"fry", "instructions"=>["do it", "ignore it"]}
Ich weiß nicht, wie man dieses Problem "Unerreichter Parameter" löst. Bitte helfe ~ Danke ~
Update: Über das Problem gelöst, ist es meine Locken Anfrage verursacht das Problem. Ich habe für meine Daten keine "rezept_einstellungsmerkmale_attribute" angegeben. Aber Schienen helfen mir, Daten für recipe_ingredients Tisch und auch eine Linie der leeren Daten zu speichern. – tina