undefined 方法 'destroy' for nil:nilClass Rails



我有这个表格的表格。

create_table "usergroups", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
  t.bigint "user_id"
  t.bigint "group_id"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["group_id"], name: "index_usergroups_on_group_id"
  t.index ["user_id"], name: "index_usergroups_on_user_id"
end

要销毁此表中的记录,我提出了以下方法。

def remove
  @usergroup = Usergroup.where('user_id = ?', params[:user_id]).where('group_id = ?', params[:group_id]).first.destroy
  redirect_to groups_path
end

这是一个表

<%= link_to 'Remove', { controller: "groups", action: "remove" },
    group_id: @group.id, user_id: user.id, data: 
    { confirm: 'Are you sure?' } %> 

如果我查看源代码,我可以看到每行都得到相应的user_id和group_id。

<a group_id="6" user_id="2" data-confirm="Are you sure?" href="/groups/remove/6">Remove</a>

目前,当我尝试删除此问题时,我会收到以下错误。

undefined method `destroy' for nil:NilClass

我知道,从错误消息中,它在其中没有找到任何信息。我也在错误消息中收到了这个。

请求

参数:

{" id" =>" 6"}

对于组,我试图删除group_id是6,但是在参数中显然说" ID"是6。也许这是一个路由问题?这是我设置的当前路由来删除记录。

get 'groups/remove/:id', to: 'groups#remove'

如果这是一个路由问题,我需要解决什么才能成功删除记录?有人可以帮我吗?铁轨路线使我感到困惑。

尝试在卷曲括号中包装相应的ID:

<%= link_to 'Remove', 
  { controller: 'groups', action: 'remove', group_id: @group.id, user_id: user.id },
  data: { confirm: 'Are you sure?' } %>

如果您设置了一条路线,那将是较少的代码:

<%= link_to 'Remove', 
  groups_path(group_id: @group.id, user_id: user.id),
  data: { confirm: 'Are you sure?' } %>

相关内容

最新更新