Я создал форму для редактирования вложенного ресурса в приложении rails. Форма отображается правильно, а кнопка «Отправить» работает с формой для действия «Создать», но при ее применении к действию редактирования происходит замечание. Ошибка не возникает, и страница не изменяется, поэтому трудно определить, где существует проблема. Подобные проблемы могут показаться результатом синтаксической ошибки, но я не могу найти ее в этом случае, однако, я могу что-то упустить. Ниже форма, о которой идет речь.
<h1>Edit an Ingredient<h1>
<%= form_with model: [ @recipe, @ingredient ], local: true do |form| %>
<p>
<%= form.label :quantity %><br>
<%= form.text_field :quantity %>
</p>
<p>
<%= form.label :measurement %><br>
<%= form.text_area :measurement %>
</p>
<p>
<%= form.label :ingredientname %><br>
<%= form.text_area :ingredientname %>
</p>
<p>
<%= form.label :label %><br>
<%= form.text_area :label %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
<%= link_to 'Back', recipes_path %>
И функционирующая "Новая" форма ...
<h1>Add an Ingredient<h1>
<%= form_with model: [ @recipe, @recipe.ingredients.build ], local: true do |form| %>
<p>
<%= form.label :quantity %><br>
<%= form.text_field :quantity %>
</p>
<p>
<%= form.label :measurement %><br>
<%= form.text_area :measurement %>
</p>
<p>
<%= form.label :ingredientname %><br>
<%= form.text_area :ingredientname %>
</p>
<p>
<%= form.label :label %><br>
<%= form.text_area :label %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
<%= link_to 'Back', recipes_path %>
И, наконец, соответствующий контроллер ...
class IngredientsController < ApplicationController
def new
@recipe = Recipe.find(params[:recipe_id])
end
def edit
@recipe = Recipe.find(params[:recipe_id])
@ingredient = @recipe.ingredients.find(params[:id])
end
def create
@recipe = Recipe.find(params[:recipe_id])
@ingredient = @recipe.ingredients.create(ingredient_params)
redirect_to recipe_path(@recipe)
end
def update
@recipe = Recipe.find(params[:recipe_id])
@ingredient = @recipe.ingredients.find(params[:id])
end
def destroy
@recipe = Recipe.find(params[:recipe_id])
@ingredient = @recipe.ingredients.find(params[:id])
@ingredient.destroy
redirect_to recipe_path(@recipe)
end
private
def ingredient_params
params.require(:ingredient).permit(:quantity, :measurement, :ingredientname, :label)
end
end
Кроме того, форма корректно заполняется, когда она отображается, что заставляет меня поверить, что это не проблема с оператором form_with. Любая помощь приветствуется!