【问题标题】:No route matches?没有路线匹配?
【发布时间】:2017-10-04 13:18:42
【问题描述】:

在我的一项测试(并从命令行使用 curl)我的一条路由(POST /users/confirm)中遇到“无路由匹配”异常。我尝试过的 curl 如下,它们都不起作用并且收到以下注释中列出的相同异常:

curl -X POST -H "Content-Type: application/json; version=1" \
   -d '{ user: { "token":"1deb36b4e6a7ba6d9203" } }' \
   http://localhost:3000/appname/users/confirm

curl -X POST -H "Content-Type: application/json; version=1" \
   -d '{ "token":"1deb36b4e6a7ba6d9203" }' \
   http://localhost:3000/appname/users/confirm

我的测试如下。我的 /config/application.rb 文件中有config.wrap_parameters = true...

这是我的 User UsersController#confirm 操作以及我的强大参数。我params.require(:user).permit(:token) 而不是简单的params.permit(:token) 因为如上所述,我的/config/application.rb 文件中有config.wrap_parameters = true...

这是我的路线条目...

这是rails routes 的输出(应用名称已删除)...

我的 /config/application.rb 文件中有 config.wrap_parameters = true...

奇怪的是,如果我将测试中的参数更改为 post :confirm, params: { token: @user.confirmation_token },则会收到以下错误:

不知所措。有什么想法吗?

【问题讨论】:

  • 根据rails routes的结果,你的路径不完整。它期望在/confirm 之后有一些东西。例如,/confirm/username 将是一个有效的路由。
  • 请不要发布图片,发布实际文字。
  • @Зелёный 6 和 1/2 打到另一个。有些人喜欢图像。希兹。
  • @YawBoakye 谢谢你,看来我毕竟不需要 :token 参数,你帮了我的忙,而不是担心我发布图片。

标签: ruby-on-rails rspec rspec-rails rails-routing rails-api


【解决方案1】:

事实证明,我的路线中根本不需要 :token。改成这样,一切正常:

发布'/appname/users/confirm/',到:'users#confirm',如:'appname_users_confirm'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2016-02-04
    • 2012-10-11
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多