首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套形式的Rails复选框

嵌套形式的Rails复选框
EN

Stack Overflow用户
提问于 2013-01-24 18:05:40
回答 1查看 2.6K关注 0票数 4

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

我有三种模式:科目、课程和小组。一个科目有许多课程,每一节课都有并且属于许多小组。

换句话说,我的父类是Subject,子类是Lessons,而“孙子”类是Groups

在主题形式中,我允许以嵌套形式创建3节课。我已经创建组之前和现在,我想创建HABTM复选框为组在每一课,但我面临一些困难,试图发送参数的Rails。

参数的主要区别是,目前我正在发送

代码语言:javascript
复制
"lesson"=>{"group_ids"=>["105", "106", "107"]} 

靠自己。然而,我想要的是将group_ids发送给每一个科目的每一节课:

代码语言:javascript
复制
"lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture", 
                             "id"=>"348",
                             "group_ids"=>["37", "38", "39", "40", "41", "42", "131"]}.

为了详细说明,这是我现在要发送的全部参数:

代码语言:javascript
复制
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7r9g2d4lmiSyNZ60i8uos9m1shxVwb0Ly23Tkrshv8w=", "subject"=>{"subject_code"=>"", "subject_name"=>"", 
                   "lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture", "id"=>"348"}, 
                                          "1"=>{"lesson_type"=>"Tutorial","id"=>"349"}, 
                                          "2"=>{"lesson_type"=>"Laboratory","id"=>"350"}}, 
                                          "remarks"=>""},
                                          "lesson"=>{"group_ids"=>["105", "106", "107"]}, "commit"=>"Update Subject", "id"=>"166"}

但是,我想发送的参数如下:

代码语言:javascript
复制
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7r9g2d4lmiSyNZ60i8uos9m1shxVwb0Ly23Tkrshv8w=", "subject"=>{"subject_code"=>"", "subject_name"=>"", 
                 "lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture", "id"=>"348","group_ids"=>["37", "38", "39", "40", "41", "42", "131"]}, 
                                        "1"=>{"lesson_type"=>"Tutorial","id"=>"349", 
                                              "group_ids"=>["37", "38", "39", "40", "41", "42", "131"], 
                                        "2"=>{"lesson_type"=>"Laboratory","id"=>"350",
                                              "group_ids"=>["37", "38", "39", "40", "41", "42", "131"]}}, "remarks"=>""}, "commit"=>"Update Subject", "id"=>"166"}

我没有正确发送参数,问题在于:

代码语言:javascript
复制
<%= check_box_tag "lesson[group_ids][]", group.id, f.object.groups.include?(group) , id: "lesson_group_ids_#{group.id}"%>`

特别是在我的复选框中,我实现了以下内容:lessongroup_ids.

我也尝试过lesson_attributesgroup_ids。但类似地,我无法保存HABTM关系。我不知道我能做些什么,这样小组就能节省每一堂课的费用。任何帮助都将不胜感激。

以下是有关守则:

代码语言:javascript
复制
<%= form_for(@subject) do |f| %>

  <div class="field">
    <%= f.label :subject_name %><br />
    <%= f.text_field :subject_name %>
  </div>

  <div>
    <%= f.fields_for :lessons do |lesson| %>
     <%= render "lesson_fields", :f => lesson %>
    <% end %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

<% end %>

在_lesson_fields.html.erb中,我有:

代码语言:javascript
复制
<div class="field">
    <%= f.label :lesson_type %><br />
    <%= f.text_field :lesson_type,:readonly => true %>
  </div>

  <div>
  <% Group.all.each do |group|%>
   <div>
      <%= check_box_tag "lesson[group_ids][]", group.id, f.object.groups.include?(group) , id: "lesson_group_ids_#{group.id}"%>       
     <%= group.group_index %>  
   </div>
  <%end%>
  </div>

对于模特来说

相关模式:

代码语言:javascript
复制
class Subject < ActiveRecord::Base
  attr_accessible :lessons_attributes
  has_many :lessons
end

class Lesson < ActiveRecord::Base
  belongs_to :subject
  has_and_belongs_to_many :groups
end

class Group < ActiveRecord::Base
  has_and_belongs_to_many :lessons 
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 18:14:09

我想,在“课”之后,复选框标签的名称(如“lesson[]”中)遗漏了一个索引。您可以手动添加该内容,也可以使用fields_for进行一些操作。我倾向于做你正在做的事情-循环遍历所有的组并向他们展示,决定是否用布尔测试来检查它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14507836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档