2016-07-30 2 views
0

작은 레서피 웹 사이트를 구축하려고합니다. 하지만 parent (recipe) 액션을 통해 내 자식 (recipe_ingredients) 테이블을 저장하기 위해 중첩 된 특성을 사용하려고 할 때. 그것에 대한 데이터가 없으면 나를 위해 ID를 생성합니다. 어느 누구도 도와 줄 수 있습니까? 레시피레일에 중첩 된 속성

모델 : recipe_ingredients위한

class Recipe < ActiveRecord::Base 
    has_many :recipe_ingredients 
    accepts_nested_attributes_for :recipe_ingredients, allow_destroy: true 
end 

모델 : 레시피

class RecipeIngredient < ActiveRecord::Base 
    belongs_to :recipe, inverse_of: :recipe_ingredients 
end 

컨트롤러 :

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 

``

I 레일 콘솔 확인한 후 , 나의 recipe_params가 아래와 같습니다.

[7] pry(#<RecipesController>)> recipe_params Unpermitted parameter: recipe_ingredients => {"name"=>"an example recipe", "category"=>"fry", "instructions"=>["do it", "ignore it"]} "허용되지 않은 매개 변수"문제를 해결하는 방법을 모르겠습니다. 도와주세요 ~ 고맙습니다 ~

+0

업데이트 : 위의 문제가 해결되었습니다. 내 컬 요청이 문제의 원인입니다. 내 데이터에 "recipe_ingredients_attributes"를 지정하지 않았습니다. 그러나 레일은 recipe_ingredients 테이블과 빈 데이터 한 줄에 대한 데이터 저장에 도움이됩니다. – tina

답변

0

recipe_params 메소드의 params.require (: recipes)를 params.require (: recipe) 으로 변경하십시오. 도움이 되길 바랍니다.

+0

감사합니다 ~ 내 "recipe_ingredients_attributes"를 지정하는 것을 잊지 마십시오. 문제 해결 ~ 가능한 경우 중첩 된 속성 질문에 대한 또 다른 질문을 확인해 주시겠습니까? 많은 감사합니다 ~ http : //stackoverflow.com/questions/38679639/update-nested-attributes-in-rails – tina