我有两个模型Driver
和Block
,它们通过两个has_many :through
关系互动:
Driver
有许多Blocks
到Permanent
和
Driver
有许多Blocks
到Available
在视图中,我有一个块的集合,看起来像这样:
<%= check_box_tag("driver[block_ids][]", block.id) %>
当我只有一个“通过”模型“可用”时,这很有效,但是当我有两个时,它是如何工作的?
另一种方法是使用一个“尽管”模型Available
,它有一个名为“permanent”的布尔值,表示它是否是另一种类型。
但我不知道如何使用视图中的复选框传递布尔值。目前,复选框决定了HABTM风格的链接是否存在,但是没有额外的参数。
<%= check_box_tag("driver[block_ids][]", block.id) %>
第三种方法是使用嵌套表单创建每个Permanent
或Available
链接。
我可以为每个Permanent
或Available
创建一个表单,每个表单都有一个隐藏的“block_id”参数。这将导致页面上超过100个表单,这感觉不对,但它可能会有效。
答案 0 :(得分:0)
也许你可以尝试只有一个关联,然后你就可以创建一个可用和永久的范围。
has_many Blocks
scope :available, -> { where(available: true) }
scope :permanent, -> { where(permanent: true) }