我有这个表格的表格。
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?' } %>