Я следовал руководству по краям рельсов при создании простого приложения для рецептов, и сейчас я пытаюсь разветвляться и делать еще несколько интересных вещей, чтобы попытаться узнать больше о рельсах.
Скореея мог подумать, что было бы не просто отредактировать ингредиент во встроенной форме, а перейти на страницу рецепта /: recipe_id / ингридиент /: ингридиент_ид / редактировать и обновить там ингредиент.
Однако часть формы, которую я использую для редактирования ингредиента, вложена в форму рецепта.поэтому он начинается с
<%= form_for([@recipe, @recipe.ingredients.build]) do |f| % >
, страница редактирования знает, что такое рецепт, но на самом деле ему нужен ингредиент.Однако если я изменю @recipe на @ingredient, то эта же форма не будет работать в контроллере рецептов.
Я совершенно уверен, что для этого не нужно создавать две отдельные формы с одинаковыми полями.
-------- больше данных о том, как выглядит частичная форма и маршрутизация -------- Полная встроенная форма для рецепта и ингредиентов:
< form_for([@recipe, @recipe.ingredients.build]) do |f| %>
<%= f.label :ingredient %>
<%= f.text_field :ingredient %>
<%=f.label :amount %>
<%=f.text_field :amount %>
<% end %>
Это вызывается из recipes / show.html.erb
<%= render @recipe.ingredients %>
То, что я сейчас пытаюсь сделать, - это возможность вызывать ту же форму из ингридиентов / edit.html.erb
<%= render @ingredients %>
, поскольку ингредиенты не имеют контекста рецепта из контроллера ингредиентов.
Есть ли лучший способ связать ингредиенты с рецептами?Я только сейчас понимаю, что это на самом деле не вложенная форма, за исключением того, что она вызывается со страницы рецепта.