У меня есть два класса Еда и food_category_price .
Ассоциация выглядит примерно так:
has_many :food_category_prices, dependent: :destroy
accepts_nested_attributes_for :food_category_prices
Контроллер продуктов выглядит как-то вот так для new , create и edit actions.
def new
@food = current_department.foods.new
@food.food_category_prices.build
end
def edit
@food = current_department.foods.find(params[:id])
end
def create
@food = current_department.foods.create(food_params)
if @food.persisted?
flash[:notice] = "Food was successfully created."
redirect_to foods_path
else
flash[:error] = "Error while adding food"
render :new
end
end
Мои параметры питания выглядят примерно так: (Я внес в белый список id вложенных атрибутов)
def food_params
params.require(:food).permit(:name, :description, :price, :image ,food_category_prices_attributes: [:id,:category_id,:extra_price],:category_ids => [])
end
Вложенная форма для нового действия пищи:
= form_for @food do |f|
.field.form-group
= f.file_field :image, class: 'd-none'
......
......
// Nested form from here
- current_department.categories.where(category_kind: 2).each do |category|
= f.fields_for :food_category_prices do |g|
= g.label :category_id, category.name + "("+String(category.price)+")"
= g.hidden_field :category_id, value: category.id
= g.label :extra_price, "Extra Price"
= g.number_field :extra_price
Задача:
Код слова perfeclty отлично подходят при создании новой еды и вложенных food_categoy_prices.
Проблема в том, что при редактировании формы атрибуты дублируются. Метки, такие как дополнительная цена и category_id , дублируются.