我在groups
控制器中使用此方法。
def remove
@usergroup = Usergroup.where(group_id: params[:group_id]).destroy
redirect_to groups_path
end
并且
<%= link_to 'Remove', { controller: "groups", action: "remove" },
group_id: @group.id, data: { confirm: 'Are you sure?' } %>
当我点击删除并确认删除时,我收到此错误。
我有点困惑,因为该组的ID是6,它应该是。对于小组我试图删除某人。为什么它会给我一个没有参数错误呢?
这是我设定的路线。我相信这是个问题。
get 'groups/remove/:id', to: 'groups#remove'
答案 0 :(得分:0)
不确定这是否是问题,但是您将变量设置为已销毁的内容
答案 1 :(得分:0)
我认为是因为你使用where
,你试图在对象列表上调用destroy,因为当你调用ActiveRecord .where
时,即使只有一个列表,它也会返回一个列表。您应该尝试这样做:
@group = Usergroup.find_by(group_id: params[:group_id])
if @group
@group.destroy
...
并使你的link_to像这样:
<%= link_to 'Remove', name_of_path_here_path(group_id: @group.id), confirm: 'Are you sure?', method: :delete %>
另外,请记住,您可以使用Rails中常用的Restful路由模式: routes.rb (例如:resources :usergroups
)。您还可以使用as: :name_of_route_here
别名路由。要仔细检查您的路线,您可以打开终端并运行bundle exec rake routes
,路线的左栏是路线助手的名称。希望这可以帮助。
答案 2 :(得分:0)
当您正在使用- (NSOperationQueue *)queue {
if (_queue == nil) {
_queue = [NSOperationQueue mainQueue];
[_queue setMaxConcurrentOperationCount:1];
}
return _queue;
}
并返回where
时,您需要&#34;识别&#34;你要销毁的对象,访问单数元素,你可以通过访问结果中的特定元素来实现,如:
Model::ActiveRecord_Relation
或者使用Usergroup.where('group_id = ?', params[:group_id]).first.destroy
,它将获取该结果中的所有对象并销毁所有这些对象:
destroy_all
答案 3 :(得分:0)
你的参数是id = 6而不是group_id = 6