gpt4 book ai didi

ruby-on-rails-3 - 放 has_many :through into play and using it in an actual form

转载 作者:行者123 更新时间:2023-12-02 02:25:47 24 4
gpt4 key购买 nike

class Allowedevent < ActiveRecord::Base
:belongs_to :room
:belongs_to :event
end

class Room < ActiveRecord::Base
:has_many :allowedevents
:has_many :events => :through => allowedevents
end

class Event< ActiveRecord::Base
:has_many :allowedevents
:has_many :rooms=> :through => allowedevents
end

我很难将上述关系放入表单或在控制台中使用它们。

问题:

  • 现在假设我保存了一个房间,我是否必须将 ID 显式添加到 allowedevents 表中?我必须这样做吗?

    room = Room.new; room.title = "测试"; room.allowedevents = ""...?

    正如你从上面看到的,我不知道如何保存实际记录。

  • 基本上我想问一下如何使用上述关系将房间保存到具有许多 allowedevents 的数据库中。我是否必须遍历用户输入并将每个输入保存到 allowedevents?有没有更好的办法?

  • 我从 railscasts 插曲中得到了以上内容,railscasts 上是否有插曲实际上从透视角度介绍了如何在前端使用它?

最佳答案

前端可以是房间的编辑页面,将所有事件列为一组复选框。然后您可以勾选允许保留此房间的事件。

在房间模型中处理这个有点棘手。有些人会建议使用 accepts_nested_attributes_for,但当用户稍后取消选中复选框时,它不会自动删除关系。

accepts_nested_attributes_for 方法有一个删除记录的选项,但会强制您为要处理的每条记录传入一个单独的“_delete”参数。如果您想在某人取消选中该框后使用 javascript 将虚拟“_delete”参数添加到表单,这一切都很好,但如果您不想依赖 javascript,它就会变得棘手。

因此我决定放弃 accepts_nested_attributes_for 并推出我自己的解决方案,可能类似于 Ryan Bates 在 accepts_nested_attributes_for 存在之前解决这个问题的方式。

这里没有发布我的解决方案,而是指向旧 RailsCast 剧集的链接,该剧集解释了如何处理复杂表单中的嵌套模型:

http://railscasts.com/episodes/73-complex-forms-part-1

如果其他人有在 has_many :through 样式关系中将 accepts_nested_attributes_for 与复选框一起使用的新颖方法,我很想听听。

关于ruby-on-rails-3 - 放 has_many :through into play and using it in an actual form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034967/

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