0

我正在尝试创建一个应用程序,让教师能够每天选择不在学校的学生。我通过 nifty-generators gem 创建了模型。问题是它不会提交给 notpresents 表。请帮忙。

# == Schema Information
#
# Table name: students
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  group_id   :integer
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Student < ActiveRecord::Base
  attr_accessible :name, :group_id
  belongs_to :days
end


# == Schema Information
#
# Table name: notpresents
#
#  id         :integer          not null, primary key
#  student_id :integer
#  day_id     :integer
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Notpresent < ActiveRecord::Base
  attr_accessible :student_id, :day_id
  belongs_to :days
end


# == Schema Information
#
# Table name: days
#
#  id         :integer          not null, primary key
#  title      :string(255)
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Day < ActiveRecord::Base
  attr_accessible :title, :presents 
  has_many :notpresents
  accepts_nested_attributes_for :notpresents
end

并查看_form.html.erb

<%= form_for @day do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>

<% for student in Student.find(:all) %>
        <div>
            <%= check_box_tag :notpresents, student.id%>
            <%= student.name %>
        </div>

    <% end %>


  <p><%= f.submit %></p>
<% end %>
4

1 回答 1

0

我从来没有用过nifty-generators gem,但是如果一个学生可以缺勤很多天,一天可以缺很多学生,你不应该是多对多的关系吗?

class Student < ActiveRecord::Base
  attr_accessible :name
  has_many :days, through: :notpresents
  has_many :notpresent
end

class Days < ActiveRecord::Base
  attr_accessible :date
  has_many :students, through: :notpresents
  has_many :notpresent
end

class :Notpresents < ActiveRecord::Base
  attr_accessible :student_id, :day_id
  belongs_to :students
  belongs_to :days
end

它也可以是一个has_and_belongs_to_many关联,但是使用has_many :through你可以有一个字符串或文本属性来记录缺席或类似的东西。

我建议使用simple_form作为表单,它使它变得如此简单:

应用程序/控制器/days_controller.rb:

def edit
  @day = Day.find(params[:id])
end

app/views/days/_form.html.erb :

<%= simple_form_for @day do |f| %>
  <%= f.association :students, as: :check_boxes %>
<% end %>
于 2013-04-27T09:29:47.143 回答