纯Ruby环境下Delete方法无法运行,请求技术协助
问题修复指南
错误根源
报错 wrong number of arguments (given 0, expected 1) 是因为调用CustomerRepository#delete时未传入必需参数,同时仓库内的delete方法实现也存在用法错误。
具体修复步骤
1. 修正控制器的destroy方法
取消注释删除逻辑,同时将用户输入的ID转为整数(匹配仓库中ID的类型),确保正确传递参数:
def destroy list id = @customers_view.ask_user_to_delete(:id).to_i @customer_repository.delete(id) list # 删除后重新展示列表,确认结果 end
2. 修正仓库的delete方法
当前使用Array#delete的方式错误,delete方法需要传入具体对象;若要按条件删除,应改用delete_if,同时添加CSV保存逻辑:
def delete(id) @customers.delete_if { |customer| customer.id == id } save_csv # 同步删除结果到CSV文件 end
或者也可以先找到目标客户再删除:
def delete(id) customer = find(id) @customers.delete(customer) if customer save_csv end
3. 确认用户输入类型
确保视图层返回的ID被转为整数,否则会因类型不匹配无法找到对应客户。
验证
修复后运行程序,执行删除操作时输入存在的客户ID,检查列表是否已移除该客户,同时查看CSV文件是否同步更新。
内容的提问来源于stack exchange,提问作者mustafaalomer711
相关产品推荐
相关产品推荐

