Я не могу получить вложенные атрибуты для сохранения в базу данных, хотя я могу видеть параметры в терминале. Я использую Rails 4.2.Rails 4.2 атрибуты вложенной формы не сохраняются
Вот мои модели:
class Device < ActiveRecord::Base
belongs_to :hub
has_many :accessories, dependent: :destroy
accepts_nested_attributes_for :accessories,
reject_if: proc { |attributes| attributes['material'].blank? },
allow_destroy: true
end
class Accessory < ActiveRecord::Base
belongs_to :device
end
Здесь вы контроллер. У меня есть модель устройства, вложенная под модель пользователя и концентратора.
class DevicesController < ApplicationController
def edit
@user = User.find_by(params[:user_id])
@hub = Hub.find_by_title(params[:hub_id])
@device = Device.find_by(id: params[:id])
end
def update
@user = User.find_by(params[:user_id])
@hub = Hub.find_by_title(params[:hub_id])
@device = Device.find_by(id: params[:id])
if @device.update_attributes(device_params)
flash[:success] = "update successfully"
redirect_to user_hub_device_path(@user, @hub, @device)
else
render 'edit'
end
end
private
def device_params
params.require(:device).permit(:model, :hub_id, :resolution, :materials, :startcost, :take_online, :delivery_time, :unitcost, :color, :accessories, :accessories_attributes => [:id, :name, :cost, :color, :device_id, :_destroy])
end
end
И наконец, моя форма.
<%= form_for([@user, @hub, @device]) do |f| %>
<fieldset>
<div id="material">
<%= f.fields_for :accessories do |a| %>
<%= render 'devices/accessory', a: a %>
<% end %>
</div>
</fieldset>
Парциальный:
<div class="row">
<%= a.collection_select :name, Material.all, :material, :material %>
<%= a.text_field :cost, id: "right-label" %>
<%= a.text_field :color, id: "right-label" %>
<%= a.check_box :_destroy %>
</div>
Вы создали экземпляры (используя метод сборки) аксессуаров, чтобы вы могли редактировать его в форме? –
Да, у меня есть несколько экземпляров, и они появляются для редактирования, но они остаются неизменными после отправки. – znz1990
Любая возможность получить исходный репозиторий, чтобы попробовать разные вещи? Является ли скрытое поле id все еще сгенерированным? –