gpt4 book ai didi

ruby-on-rails - 嵌套形式的 HABTM 复选框

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:26 25 4
gpt4 key购买 nike

我正在尝试以嵌套形式实现 HABTM 复选框。

目前,我有 3 个模型。主题、类(class)和小组。协会如下:每个科目都有很多课。每节课都属于许多小组。

现在,我正在尝试在单个创建和编辑表单上实现它们。这样一节课嵌套在主题中,每节课都有一个组复选框列表来实现 HABTM 关系。

我在实现 HABTM 关系时遇到了麻烦,因为每个科目都有很多类(class),而且我不确定如何区分不同的类(class)。

为了进一步详细说明,我能够使嵌套表单正常工作,但我无法让 HABTM 复选框保存到正确的类(class)中。以下代码示例是我的 HABTM 复选框实现。

  <% Group.all.each do |group|%>
<%= check_box_tag "subject[lessons_attributes[0]][group_ids][]", group.id, f.object.groups.include?(group) %>
<%= group.group_index %>
<%end%>

目前,我已经使用“subject[lessons_attributes[0]][group_ids][]”这一行将其保存到第一课。

但是,类(class)数量各不相同,我不太确定如何确定类(class)“编号”,即“subject[lessons_attributes[0]][group_ids][ 中的粗体 0 ]”。这样我就可以将小组保存到正确的类(class)中。

如有任何建议,我们将不胜感激。

最佳答案

对于那些使用 Rails 4 并有同样问题(和我一样)的人

@Viktor Trón 中的Group.all.each 循环的回答是不必要的:有一个新的 FormBuilder 方法,collection_check_boxes ,它就是为此而创建的!

您的代码将是:

<% form_for @subject do |form| %>
....
<% @subject.lessons.each_with_index do |l, i| %>
<%= form.fields_for :lessons, l do |lesson_fields|%>
<%= lesson_fields.collection_check_boxes :group_ids, Group.all, :id, :group_index %>
<% end %>
<% end %>
<% end %>

然后您必须将 accepts_nested_attributes_for :lessons 添加到您的 Subject 模型,并在您的 SubjectsController 中,更改 subject_params“允许”类(class)嵌套参数的方法:

params.require(:subject).permit(..., lessons_attributes: [:id, group_ids: []])

在您的 SubjectsController 中,createupdate 操作保持不变:@subject = Subject.create(subject_params) 例如,将创建主题、相关类(class)并将它们的 HABTM 关系正确地更新到组(除非我在某处犯了错误!)。

关于ruby-on-rails - 嵌套形式的 HABTM 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878710/

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