• 确实吃灰么,我的 PS4 也吃灰大半年,连压方便面都嫌麻烦。无奈买的游戏都是数字版,卖了就觉得亏的不止 PS4 本身,就持续吃灰....唉!

  • 我之前学习 tutorial 的时候遇到问题不知道怎么解决,我就把那一章全部照着重写,一行行检查哪里不一样。如果想知道哪里写错了,那就改一行运行一下,直到找出哪一行有问题。

    因为 tutorial 里的代码我相信它是完全可以运行的。最后发现大多都是自己的一些拼写、文件名、文件引用的问题。

    另外在有代码参考的前提下,多复制粘贴,少自己敲。但不是无脑复制粘贴,而是理解它后直接粘贴从而避免拼写问题。

    你可以参考下...

  • 前面已经举过例子了

    你在 controller 中去 permit 了 params,

    params.require(:user).permit(:name, :email, :title, :password, :password_confirmation)
    

    这行代码的结果是一个 permit 后的 params。

    按我前面回复你的内容,你该想出 2 个可能的原因。

    思路一: 在 permit 后,params 本身并没有改变,所以页面上还是 permit 为 false

    这是一个可能的思路。是否正确,你需要去验证它!验证它,对于刚开始学习非常重要。

    思路二: 只要 permit 参数后,params 就会变为 permit 为 true。

    这也是一个可能的思路,你需要去验证它。

    这两个思路你都去验证后,你就会知道你的问题:为何调试信息总是显示 permitted: false 啊?的原因了。

  • 不存在 "影响网页的输出" 这个概念。这些值都是你在 controller 的 action 中去 permit、去赋值、去改变的。页面上你只是可以展示这些值(或不展示),展示与否都是不会影响它本身的值的。就像你在终端定义一个 a 变量,你 puts a 变量,对 a 变量有任何影响和改变吗?具体是否 permit、是否赋值、是否改变。都是你在这个 action 中决定的。你可以把页面渲染这个动作当作是这个 action 中代码执行完毕后的最后一个延伸。

  • 你是为了解决 A 问题,发现有 B 方案。你无法实现 B 方案,就去把 A 问题本身给干掉了。你这样做完全不对啊!

    路由定义的是 delete 方式,就是希望你用 delete 方式去命中它。你应该解决是的让 link_to 按钮发送一个 delete 请求,而不是把路由改成 get 请求。

  • 路由的作用就是映射,而映射的条件有 2 个。一个是 request method,一个是 url。

    你定义的路由是 delete 的 method。

    那么首先检查的是你在页面上的那个按钮生成的请求的 method 和 URL 是否是你期望的。检测方式就是点击后查看日志。清空屏幕,保证你这次即将点击生成的 log 没有其他干扰信息。

    例如这样

    Started GET "/xxx/xxx" for xxx at 2020-01-07 14:14:29 +0800
    

    排查错误就要从 log 里去分析。

    这里就说了 method 是 GET,URL 是 /xxx/xxx 然后再去你的路由里检查,是 method 没对,还是 url 没对。

    在你目前提供的信息里,至少很明显 method 没对。所以你要检查,为什么那个 link_to 你写了 method 是 delete,点击后它还是 get 请求,是拼写错误吗?还是其他什么原因,这是你需要去查询和解决的了。

  • a = {"abc" => 1}
    # 假设a是你那的参数
    
    # Case 1
    puts a.merge({"efg" => 2})
    
    # Case 2
    puts a
    

    你在 merge 一个 hash 时,就像你 user_params 方法里做的一样,不会改变本身 a 或者 params 的值。 所以你打到页面上的 params 始终是 false

    你可以尝试用 binding.pry 或者 debugger 在 controller 方法里打断点,你看你把一个 params 给 permit 后,再直接调用 params,看它 permit 的情况就知道为什么了。

  • 哇跟真的一样

  • 而且比上个月 bot 和 cap 分别少了 2k😅

  • 最头疼就是构建数据了,还要构造各种不一样的数据来测不同情况下的条件....有时候甚至觉得就直接拿现有的数据来测方便挺多,但这肯定违背了测试独立性的原则。😅