嵌套路线未按预期工作

Nested routes not working as expected

我正在用 rails5.beta 创建一个 API,我按照指南创建了嵌套路由:http://guides.rubyonrails.org/routing.html#nested-resources

我的模特:

class Paymethod < ApplicationRecord
  has_many :transactions
end

class Transaction < ApplicationRecord
  belongs_to :paymethod
end

和routes.rb

resources :paymethods do
    resources :transactions
end

rake routes 给我:

 paymethod_transactions GET    /paymethods/:paymethod_id/transactions(.:format)     transactions#index

但是对于任何 paymethod_id

我总是得到相同的输出

GET aymethods/1/transactions

[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]

同理:GET paymethods/2/transactions

[
  {
    "id": 1,
    "amount": 10,
    "user_id": 21,
    "paymethod_id": 1,
  },
  {
    "id": 2,
    "amount": 1,
    "user_id": 21,
    "paymethod_id": 1,
  }
]

那么,为什么不按 paymethod_id 过滤结果?

顺便说一句,它可以像 Paymethod.find(2).transactions

一样与 rails 一起使用

这里是控制器: https://gist.github.com/nilsigusi/f59e65dd34495e08eaee

实际上是它的标准控制器,通过使用 rails

创建模型生成

在你的要点中,你在第 59 行有这个:( https://gist.github.com/nilsigusi/f59e65dd34495e08eaee#file-gistfile1-txt-L59 )

@transactions = Transaction.all

其中return所有交易记录,无条件适用。

替换为:

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

获取支付方式下的所有交易记录。