Ruby on rails 嵌套路由未按预期工作
我正在使用rails5.beta创建API,我按照指南创建嵌套管线: 我的模型: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
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 codepaymethod.find(params[:paymethod_id])中执行Transaction.all
并不是您想要的,您想要的是特定paymethod.transactions中的事务。为什么文档中没有这个?我阅读了文档,它使嵌套路由听起来像是自动工作的。