rails check_box_tag包含记录数组的现有值

时间:2019-04-28 12:21:16

标签: ruby-on-rails

以下标记为嵌套形式

<%= check_box_tag "friend_ids[]", ff.id, @contentrestrictions.friends.include?(ff.id) %>

正在处理以下记录数组

>> @contentrestrictions

[
#<Contentrestriction id: 29, usercontent_id: nil, friend_id: nil, created_at: "2019-04-28 10:55:32", updated_at: "2019-04-28 10:55:32">, 
#<Contentrestriction id: 30, usercontent_id: nil, friend_id: 2, created_at: "2019-04-28 10:55:32", updated_at: "2019-04-28 10:55:32">, 
#<Contentrestriction id: 31, usercontent_id: nil, friend_id: 4, created_at: "2019-04-28 10:55:32", updated_at: "2019-04-28 10:55:32">]

尽管

class Contentrestriction < ApplicationRecord
  belongs_to :friend, optional: true

@contentrestrictions.后跟friend_id, friend_ids中的任何一个都附加或不附加[]均导致NoMethodError:数组的未定义方法。

include函数如何获得合适的数组以供使用?

1 个答案:

答案 0 :(得分:1)

问题出在这一行:

@contentrestrictions.friends.include?(ff.id)

您正在将一个朋友对象与一个朋友ID进行比较,您可以使用pluck来获取朋友ID,或者可以只比较这些对象:

@contentrestrictions.friends.include?(ff)

这将查询.friends,您可以通过预先加载friends关联来删除此查询,例如eager_load(:friends)includes(:friends)