gpt4 book ai didi

ruby-on-rails - activeadmin 中的嵌套表单不保存更新

转载 作者:行者123 更新时间:2023-12-04 01:23:50 24 4
gpt4 key购买 nike

对于这些模型,我在 ActiveAdmin 中有一个嵌套表单(a :class_section has_many :class_dates):

class ClassDate < ActiveRecord::Base
belongs_to :class_section
validates :start_time, :presence => true
validates :end_time, :presence => true

end


class ClassSection < ActiveRecord::Base
belongs_to :class_course
has_many :class_dates
belongs_to :location

accepts_nested_attributes_for :class_dates
end

当我查看表格时,一切似乎都在正确的地方。但是,当我更新 class_date 时,它​​不会保存。
ActiveAdmin.register ClassSection do

permit_params :max_students, :min_students, :info, :class_course_id, :location_id

form do |f|
f.inputs "Details" do
f.input :class_course, member_label: :id_num
f.input :min_students, label: "Minunum Students"
f.input :max_students, label: "Maxiumum Students"
f.input :location
end
f.inputs do
f.input :info, label: "Additional Information"
end
f.inputs "Dates" do
f.has_many :class_dates, heading: false do |cd|
cd.input :start_time, :as => :datetime_picker
cd.input :end_time, :as => :datetime_picker
end
end
f.actions
end

index do
column :class_course
column :location
default_actions
end

filter :class_course
filter :location

show do |cs|
attributes_table do
row :class_course do
cs.class_course.id_num + " - " + cs.class_course.name
end
row :location
row :min_students, label: "Minunum Students"
row :max_students, label: "Maxiumum Students"
row :info, label: "Additional Information"
end

panel "Dates" do
attributes_table_for class_section.class_dates do
rows :start_time, :end_time
end
end
active_admin_comments
end

end

这是 ClassDates 的 ActiveAdmin 文件:
ActiveAdmin.register ClassDate, as: "Dates" do

permit_params :start_time, :end_time, :class_section_id

belongs_to :class_section

end

你能看出它没有正确保存的原因吗?

更新:我在 AA 中添加了以下代码,现在它似乎可以工作了:
controller do
def permitted_params
params.permit!
end
end

让我知道是否有更好的解决方案。谢谢。

更新 2:然而,有一个挥之不去的问题。我无法使用此表单删除 ClassDates。

最佳答案

您需要允许嵌套参数,但您应该 从不 使用 params.permit! .这是极其不安全的。尝试这个:

ActiveAdmin.register ClassSection do
permit_params :max_students, :min_students, :info, :class_course_id, :location_id,
class_dates_attributes: [ :id, :start_time, :end_time, :_destroy ]

form do |f|
# ...
f.inputs "Dates" do
f.has_many :class_dates, heading: false, allow_destroy: true do |cd|
cd.input :start_time, :as => :datetime_picker
cd.input :end_time, :as => :datetime_picker
end
end
f.actions
end

# ...
end

您的 permitted_params 的配置(和 ClassDate )管理面板与 ClassSection 中允许的参数无关管理面板。将它们视为应用程序中的独立 Controller 。

添加 allow_destroy: true has_many 的选项call 将在表单中添加一个复选框,以允许您在提交表单时删除类(class)时间。

关于ruby-on-rails - activeadmin 中的嵌套表单不保存更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21410005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com