以下标记为嵌套形式
<%= 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
函数如何获得合适的数组以供使用?
答案 0 :(得分:1)
问题出在这一行:
@contentrestrictions.friends.include?(ff.id)
您正在将一个朋友对象与一个朋友ID进行比较,您可以使用pluck
来获取朋友ID,或者可以只比较这些对象:
@contentrestrictions.friends.include?(ff)
这将查询.friends
,您可以通过预先加载friends
关联来删除此查询,例如eager_load(:friends)
或includes(:friends)