0

我有一个 Client 模型,并且嵌套在其中,我有一个 Program 模型。前任:

localhost:3000/clients/2
localhost:3000/clients/2/programs/5

在我的 ApplicationController 类中,我希望能够在 before_filter 中加载 Client 模型对象。我试着这样做:

@user_client = Client.find(params[:client_id])

这适用于嵌套资源(localhost:3000/clients/2/programs/5),但不适用于客户端领域(localhost:3000/clients/2)。如果我这样做:

@user_client = Client.find(params[:id])

恰恰相反——它适用于客户端领域(localhost:3000/clients/2),但不适用于嵌套资源(localhost:3000/clients/2/programs/5)。

有没有一种对两者都有效的方法?

4

1 回答 1

2

你能做类似的事情:

@user_client = Client.find(params[:client_id] || params[:id])

因此,如果一个为 nil,则另一个将作为 id 输入。

将它们按此顺序排列意味着如果有:client_id.

但危险的项目是链接末尾的 id 被调用:id,因此如果您尝试识别记录,可能会出现一些混乱。请保持警惕。

于 2012-10-11T23:23:32.750 回答