2016-07-30 181 views
0

我正在嘗試構建一個小配方網站。但是,當我嘗試使用嵌套屬性通過父(配方)操作保存我的孩子(recipe_ingredients)表。它只爲我生成ids而沒有任何數據。任何人都可以幫忙嗎?在rails中的嵌套屬性

模型配方:

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

模型recipe_ingredients:

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 

```

後,我請與導軌控制檯,我的recipe_params就像下面

[7] pry(#<RecipesController>)> recipe_params Unpermitted parameter: recipe_ingredients => {"name"=>"an example recipe", "category"=>"fry", "instructions"=>["do it", "ignore it"]} 我不知道如何解決「未經許可的參數」的問題。請幫助〜謝謝〜

+0

更新:上面的問題解決了,這是我的curl請求導致的問題。我沒有爲我的數據指定「recipe_ingredients_attributes」。但是,rails幫助我保存recipe_ingredients表的數據以及一行空數據。 – tina

回答

0

嘗試將您的recipe_params方法中的params.require(:recipes)更改爲params.require(:recipe) 希望它有幫助。

+0

謝謝〜我忘了在curl中指定「recipe_ingredients_attributes」。問題解決〜如果可能的話,你會介意另外一個關於嵌套屬性問題的問題嗎?非常感謝〜http://stackoverflow.com/questions/38679639/update-nested-attributes-in-rails – tina