パッチ要求を送信するときにネストされた属性を更新する際に問題があります。私はレシピを更新するときにrecipe_ingredientsを更新したいと思います。レシピを更新するたびに、レシピは更新されますが、recipe_ingredientsはそのレシピを追加するだけです。ネストされた属性をレールで更新する
`` `
class Recipe < ActiveRecord::Base
has_many :recipe_ingredients, dependent: :destroy
accepts_nested_attributes_for :recipe_ingredients, allow_destroy: true, update_only: true
end
:〜感謝〜
レシピコントローラー
` ``
def update
@recipe = Recipe.find(params[:id])
if @recipe.update(recipe_params)
@recipe_ingredients = @recipe.recipe_ingredients.all
head :no_content
else
render json: @recipe.errors, status: :unprocessable_entity
end
end
def recipe_params
params.require(:recipes)
.permit(:name, :category, instructions: [], recipe_ingredients_attributes: [:id, :recipe_id, :ingredient, :measure, :amount])
end
`` `
レシピモデルを助けてください`` ``
カール要求: `` `
curl --include --request PATCH http://localhost:3000/recipes/1 \
--header "Authorization: Token token=..." \
--header "Content-Type: application/json" \
--data '{
"recipes": {
"name": "second example recipe",
"category": "grill",
"instructions": ["do it", "ignore it"],
"recipe_ingredients_attributes": [{
"amount": 1,
"ingredient": "egg yolk",
"measure": "cup"
},
{
"amount": 3,
"ingredient": "soy milk",
"measure": "cup"
}]
}
}'
` ``
この更新プログラムを扱うビューの 'form_for'部分を投稿してください。 – MarsAtomic
私はform_for部分を持っていません。私はまだフロントエンドを作っていない。私はちょうどそれが動作するかどうかをテストするためにカール要求をしてみようとしています。 – tina
あなたの 'recipe.rb'はどうやって関係を二重にチェックするのですか?フォームなしでネストされた属性をテストしたことがないので、私は100%確信していませんが、form_forを使用すると違いが生じる可能性があります。 – MarsAtomic