0

我不知道给这个贴标签的最好方法,但基本上,我有 3 个模型,

课程:一个主题,它有许多会话会话:有许多插槽组成一个会话插槽:具有它发生的日期和时间

这个想法是,如果您对课程感兴趣,您可以注册参加会议。每个时段都有相同数量的时段,但这些时段可能在一个月的不同时间(例如,您可以在 7 月 30 日至 8 月 3 日参加为期 5 天的时段,或一周后的同一时段,即 8 月 6 日至 8 月 10 日)

所以我需要尝试设置我的嵌套,以便您可以添加或删除会话,每个会话都应该具有相同数量的嵌套插槽(基于表单上方某处下拉列表中的数字)。

谁能想到这样做的好方法?甚至是讨厌的方式?我遇到了麻烦:)

更新

我让它与一些 JS 和东西一起工作,但是现在当它保存时,它总是错误地说 Sessions slot session is not valid - 它没有将槽 session_id 设置为其父会话并且它没有将会话 course_id 设置为课程

我不知道为什么。有人见过这个吗?对象在 has_many 数组中...

更新 2

{"title"=>"test123", "description"=>"test123", "sessions_attributes"=>{"0"=>{"slots_attributes"=>{"0"=>{"when(3i)"= >"10", "when(2i)"=>"8", "when(1i)"=>"2012", "when(4i)"=>"10", "when(5i)"=>" 00", "_destroy"=>"0"}, "1"=>​​{"when(3i)"=>"10", "when(2i)"=>"8", "when(1i)"= >"2012", "when(4i)"=>"10", "when(5i)"=>"00", "_destroy"=>"0"}, "2"=>{"when(3i) "=>"", "当(2i)"=>"", "当(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "3"=>{"when(3i)"=>"", "当(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1" }, "4"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>" ", "when(5i)"=>"", "_destroy"=>"1"}, "5"=>{"when(3i)"=>"", "when(2i)"=>"" , "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "6"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i )"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "7"=>{"when(3i)"=>"", "when(2i) "=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, " 8"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", " when(5i)"=>"", "_destroy"=>"1"}, "9"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1 "}, "10"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=> "", "when(5i)"=>"", "_destroy"=>"1"}, "11"=>{"when(3i)"=>"", "when(2i)"=>" ", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "12"=> {"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "13"=>{"when(3i)"=>"", "when(2i)"= >"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "14" =>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when( 5i)"=>"", "_destroy"=>"1"}, "15"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i )"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "16"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"= >"", "when(5i)"=>"", "_destroy"=>"1"}, "17"=>{"when(3i)"=>"", "when(2i)"=> "", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}, "18"= >{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i) )"=>"", "_destroy"=>"1"}, "19"=>{"when(3i)"=>"", "when(2i)"=>"", "when(1i)"=>"", "when(4i)"=>"", "when(5i)"=>"", "_destroy"=>"1"}}}} }

更新 3

在保存之前添加此代码已修复它,尽管我不知道为什么需要它。

def apply_nested_models_hack
  ## HACK ##
  
  @course.sessions.each do |s|
    s.course = @course
    s.slots.each { |ss| ss.session = s }
  end
  
  ## /HACK ##
end

我想知道为什么关系没有确定,即使我已经解决了我的问题,但我没有回答这个问题。

更新 4

事实证明这不是嵌套形式,而是我拥有的事实:

validates :session, presence: true 

on Slot - ActiveRecord 直到保存后才设置关系的这一边,因此它被认为是无效的并且不会保存。我认为这是 AR 中的一个错误,因为它应该显示数据库中的关系,即使它们还没有被持久化。

4

2 回答 2

0

仅使用 Rails,嵌套几级会很棘手。可以肯定,但它可能会变得混乱。

我建议你看看这个宝石:https ://github.com/ryanb/nested_form/

我没有使用它,但它似乎很有希望

于 2012-07-31T16:41:20.400 回答
0

事实证明这不是嵌套形式,而是我拥有的事实:

validates :session, presence: true 

on Slot - ActiveRecord 直到保存后才设置关系的这一边,因此它被认为是无效的并且不会保存。我认为这是 AR 中的一个错误,因为它应该显示数据库中的关系,即使它们还没有被持久化。

于 2012-08-06T11:18:31.573 回答