我正在申请评估学生的工作。当学生创建新帖子时,Rails大部分时间使用POST动词,生活也很好。但是如果工作很晚并且Post已被评分为缺失,则Rails尝试使用PATCH动词而不是POST创建它(使用相同的路径)并创建Post失败。
我在Heroku的日志中看到的错误消息是:
ActionController::RoutingError (No route matches [PATCH] "/users/55/posts”)
据我所知,当Rails决定使用PATCH动词时,两种情况之间存在分数实例。分数模型包括以下这一行:
belongs_to :post, touch: true
这可能是造成行为差异的原因吗?我认为可能,但是在创建缺失作业的分数时没有创建Post对象(我通过向Post.where(user: score.user)
键入bin/rails c
来检查这一点的方式。结果是一个空数组。
有没有办法强制Rails在想要进行PATCH时进行POST?
答案 0 :(得分:1)
如果没有更多信息,很难诊断出来。您可以使用form_for @user, method: :post do |f|
明确指示Rails使用POST方法。