未定义的方法`销毁'零:NilClass Rails

我有这张表是一个有很多通过关系。未定义的方法`销毁'零: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

这是一个表,所以我一定要得到的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 

我知道,从错误信息,所以没有找到与它的信息任何东西。我在错误信息中也收到了这个。

请求

参数:

{ “ID”=> “6”}

对于我试图删除GROUP_ID组是6然而,在参数它很明显,'id'是6.也许这是一个路由问题?这是我设置的删除记录的当前路线。

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

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

回答:

尝试在大括号内包装各个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?' } %>

以上是 未定义的方法`销毁'零:NilClass Rails 的全部内容, 来源链接: utcz.com/qa/257736.html

回到顶部