嵌套路线未按预期工作
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])
获取支付方式下的所有交易记录。
我正在用 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
创建模型生成在你的要点中,你在第 59 行有这个:( https://gist.github.com/nilsigusi/f59e65dd34495e08eaee#file-gistfile1-txt-L59 )
@transactions = Transaction.all
其中return所有交易记录,无条件适用。
替换为:
@transactions = Transaction.where(paymethod_id: params[:paymethod_id])
获取支付方式下的所有交易记录。