Ruby on rails Rails参数数量错误(给定0,应为1)

Ruby on rails Rails参数数量错误(给定0,应为1),ruby-on-rails,Ruby On Rails,我的组中有此方法 def remove @usergroup = Usergroup.where(group_id: params[:group_id]).destroy redirect_to groups_path end 及 当我单击“删除”并确认删除时,会出现此错误 我有点困惑,因为组的id是6,应该是。对于我试图从中除名的团体。为什么会给我一个无参数的错误呢 这是我设定的路线。我相信这就是问题所在。 get'groups/remove/:id',to'groups#re

我的
组中有此方法

def remove
  @usergroup = Usergroup.where(group_id: params[:group_id]).destroy
  redirect_to groups_path
end


当我单击“删除”并确认删除时,会出现此错误

我有点困惑,因为组的id是6,应该是。对于我试图从中除名的团体。为什么会给我一个无参数的错误呢

这是我设定的路线。我相信这就是问题所在。
get'groups/remove/:id',to'groups#remove'
不确定这是否是问题所在,但您将变量设置为您已销毁的内容

我认为这是因为您使用了
where
,您试图对对象列表调用destroy,因为当您调用ActiveRecord
。where
时,即使只有一个列表,它也会返回一个列表。您应该尝试这样做:

@group = Usergroup.find_by(group_id: params[:group_id])
if @group
  @group.destroy
...
并使您的链接像这样:

<%= link_to 'Remove', name_of_path_here_path(group_id: @group.id), confirm: 'Are you sure?', method: :delete %>


另外,请记住,您可以使用Rails:routes.rb中常用的Restful路由模式(例如:
resources:usergroups
)。您还可以在此处使用
as::name_of_route_来别名路由
。要仔细检查您的路由,您可以打开终端并运行
bundle exec rake routes
,路由的左栏是路由助手的名称。希望这有帮助

当您使用
where
时,它返回一个
Model::ActiveRecord\u Relation
,然后您需要“识别”要销毁的对象,也就是说,访问单个元素,您可以通过访问结果中的特定元素来实现,如:

Usergroup.where('group_id = ?', params[:group_id]).first.destroy
或者使用
destroy\u all
,它将获取该结果中的所有对象并销毁所有对象:

Usergroup.where('group_id = ?', params[:group_id]).destroy_all

您的参数是id=6而不是group\u id=6

尝试您的方法后,我似乎遇到了以下错误:
未定义的方法
destroy'for nil:NilClass`因此您使用
where
的查询结果为空。
.where()。首先
=>
。查找方法
请查看更新的问题。我相信这与路线有关。你正在使用
参数[:group_id]
,但是你的路线和你的参数说
id
,尝试在这两种情况下都使用id@TrentonTyler。这可以作为评论添加Dave。是的,对不起,我的手机飞出了。
Usergroup.where('group_id = ?', params[:group_id]).destroy_all