我有这个表有很多关系。
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
这是一个表,所以我确保获取每行的group_id和user_id以删除用户选择的正确行。
<%= 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
我知道,从错误消息中,它没有找到包含该信息的任何内容。我也在错误信息中得到这个。
请求
参数:
{&#34; ID&#34; = GT;&#34; 6&#34;}
对于我试图删除group_id的群组是6但是在参数中它明确地说是&#39; id&#39;是6.也许这是一个路由问题?这是我设置删除记录的当前路线。
get 'groups/remove/:id', to: 'groups#remove'
如果这是路由问题,我需要修复什么才能成功删除记录?有人可以帮帮我吗? Rails路由对我来说很困惑。
答案 0 :(得分:0)
尝试在花括号内包装相应的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?' } %>