Ruby on rails 嵌套路由未按预期工作

Ruby on rails 嵌套路由未按预期工作,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我正在使用rails5.beta创建API,我按照指南创建嵌套管线: 我的模型: class Paymethod < ApplicationRecord has_many :transactions end class Transaction < ApplicationRecord belongs_to :paymethod end rake routes为我提供了: paymethod_transactions GET /paymethods/:paymetho

我正在使用rails5.beta创建API,我按照指南创建嵌套管线:

我的模型:

class Paymethod < ApplicationRecord
  has_many :transactions
end

class Transaction < ApplicationRecord
  belongs_to :paymethod
end
rake routes
为我提供了:

 paymethod_transactions GET    /paymethods/:paymethod_id/transactions(.:format)     transactions#index
但对于任何
paymethod\u id

获取付款方法/1/交易

[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
与此相同:
GET paymethods/2/交易

[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
那么,为什么不通过
paymethod\u id
过滤结果呢

顺便说一句,它与rails一起工作,比如
Paymethod.find(2).transactions

[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]
这里有一个控制器:


实际上,它的标准控制器是通过在要点中创建带有rails的模型生成的,您在第59行看到了这一点:()

返回所有交易记录,不应用任何条件

替换为:

@transactions = Transaction.where(paymethod_id: params[:paymethod_id])

获取属于付款方式的所有交易记录。

您能显示控制器的外观吗?您的控制器可能没有找到正确的付款方式。正如KyleDecot所说,我们需要查看您的控制器,以检查您是否执行了
Paymethod.find(params[:Paymethod_id])。事务处理
我用控制器更新了问题。我没有修改控制器,因为教程中没有提到它。我应该这样做吗?也许在教程的后面,他们会告诉你代码中的这个缺陷/错误。但可以肯定的是,在rails code
paymethod.find(params[:paymethod_id])中执行
Transaction.all
并不是您想要的,您想要的是特定paymethod.transactions中的事务。为什么文档中没有这个?我阅读了文档,它使嵌套路由听起来像是自动工作的。