我正在使用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
这里有一个控制器: https://gist.github.com/nilsigusi/f59e65dd34495e08eaee
实际上是它的标准控制器,通过创建带有rails的模型生成
答案 0 :(得分:2)
在你的要点中,你在第59行:( https://gist.github.com/nilsigusi/f59e65dd34495e08eaee#file-gistfile1-txt-L59)
@transactions = Transaction.all
返回所有交易记录,不应用任何条件。
替换为:
@transactions = Transaction.where(paymethod_id: params[:paymethod_id])
获取属于paymethod的所有交易记录。