【问题标题】:Rails 4 dynamic form nested attributes without hidden inputRails 4动态表单嵌套属性没有隐藏输入
【发布时间】:2015-08-25 03:44:41
【问题描述】:

之前我问了一个关于建立一个出勤列表来获取学生并建立一个检查列表来标记出勤率的问题,并提出了这个问题。

def new
    @attendance_list = @classroom.attendance_lists.new

    @attendance_list.attendances = @classroom.student_ids.map do |student_id|
      @attendance_list.attendances.build(student_id: student_id)
    end
end

def create
    @attendance_list = @classroom.attendance_lists.new(attendance_list_params)
    @attendance_list.classroom_id = params[:classroom_id]

    respond_to do |format|

end

参数

params.require(:attendance_list)
  .permit(:post_date, :remark, 
          attendances_attributes: [:student_id, :attended, :remarks ])

使用简单的字段

= simple_form_for [@school, @classroom, @attendance_list] do |f|
  = f.input :post_date
  = f.input :remark

    = f.simple_fields_for :attendances do |g|
      ** you see i needed a hidden student_id **
      = g.input :student_id, as: :hidden
      ...... 

型号

class AttendanceList < ActiveRecord::Base
  belongs_to :classroom
  has_many :attendances
  has_many :students, :through => :attendances

  accepts_nested_attributes_for :attendances
end

class Attendance < ActiveRecord::Base
  belongs_to :student
  belongs_to :attendance_list
end

class Classroom < ActiveRecord::Base
  belongs_to :school
  has_and_belongs_to_many :students
  has_many :attendance_lists

  validates :class_name, presence: true
end

如果没有隐藏的输入,我该怎么办,因为这条线似乎不起作用。

build(student_id: student_id)

【问题讨论】:

  • 粘贴模型和表格
  • 您好,我已将其添加到问题中
  • 在学生模型中你定义了出席名单的关联吗?

标签: ruby ruby-on-rails-4 hiddenfield


【解决方案1】:
class AttendanceList < ActiveRecord::Base
  belongs_to :classroom
  has_many :attendances
  has_many :students, :through => :attendances
  accepts_nested_attributes_for :attendances
end

class Attendance < ActiveRecord::Base
  belongs_to :student
  belongs_to :attendance_list
end

class Classroom < ActiveRecord::Base
  belongs_to :school
  has_and_belongs_to_many :students
  has_many :attendance_lists

  validates :class_name, presence: true
end

class Student < ActiveRecord::Base
  has_many :attendances
  has_many :attendance_lists, :through => :attendances
end

查看文件

= simple_form_for @student do |f|
  = f.simple_fields_for :attendances do |g|
      ** your code **

【讨论】:

  • simple_form_for 使用的是attendance_list 所以你的意思是simple_fields?感谢您为我发现了这一点!一定错过了has_many :attendance_lists, :through =&gt; :attendances
  • 它不起作用,因为我认为出席的父母是出席者表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
相关资源
最近更新 更多