Ruby 遇到一个神奇的问题,不得解决,求高人指点!

Watermelon-Boy · February 22, 2021 · Last by Watermelon-Boy replied at February 28, 2021 · 1062 hits

pry 断在那里调试一下

先在 console require 'faker' 試著執行看看 Faker::Name.name

Reply to 316786359

用你的方法调试了,找出问题了,谢谢

Reply to kevinluo201

调试出来了,是这一行的问题

Reply to 316786359

我换了个字符串,但是这样出来的示例用户名字都是一样的,有没有什么代码是可以让用户名字随机的

结果是什麽问题 😂

Reply to kevinluo201

用断点调试的,faker 那行代码的问题

Faker::Name.name 不就是随机的吗😐

Reply to ueiu

对啊,是随机生成用户的呀,但是不知道我这里为什么不生效

Reply to ueiu

可以给我看一下的全部代码吗?

参数错误,期望的是 0 到 1 个,上面显示的 2

😅 截图是很难想让人家帮你破案的,直接把你的 demo 上传到 github 地址发出来看一看 大概就知道什么问题了

懂了,下次这样做

同样的问题,发生在不同的代码,各位帮忙看看 https://github.com/Zhl1102/sample_app.git

你这段错误代码根本没提交上来吧?你项目仓库里没有 index.html.erb 文件

这已经算提示很明显的报错了
期望 1 个参数,你传了 2 个
应该是第一行 provide 这个方法传参传多了

Reply to spike76

分支是 updating-users,我没上传总的,目前只上传了分支,你点开分支看一下谢谢

Reply to xeruzo

是要删除第一行 provide 吗?

实际上大家都被表面上的错误信息误导了,的确是 ArgumentError, 但并不是截图中给出的那行触发的,而是 gem 内部的代码触发的 (我也不知为何 rails 没有打印完整的错误栈).

针对楼主在 15 楼中的错误说下原因:

15 楼截图中显示是 will_paginate 这里报错,实际触发这个错误的是will_paginate 这个 gem 中的 will_paginate_translate 方法,translate 这一行抛出的错误

translate 的方法签名是translate(key, **options), 而 will_paginate_translate 在调用 translate 时,传入了一个 symbol 和 hash

translate(key, options.merge(:default => defaults, :scope => :will_paginate))

在 ruby2 中,这并没有错,然而楼主用的是 ruby3. 需要写成这样才能正确

translate(key, **options.merge(:default => defaults, :scope => :will_paginate))

详细原因看这.

楼主最开始描述的问题应该也是这个原因造成的,建议直接将 ruby 换成 2.7 解决。

Reply to spike76

真被大神说对了,非常感谢你,帮到了我🙏

Reply to spike76

请问你是怎么定位到问题的,用的什么方法和工具

rubymine

不过你这个问题只需要点开错误页面上的 full trace 就能看到完整的错误栈

ruby3 现在跟有的 gem 不兼容,尤其是 21 楼说的 hash 传值报错的,我也发现了好几个,最后又换回了 2.7

Reply to yfscret

我最后也切换回 2.7 了

You need to Sign in before reply, if you don't have an account, please Sign up first.