我有一个客户端模型,并嵌套在其中,我有一个程序模型。例如:
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)中工作。
是否有适合两者的方法?
答案 0 :(得分:2)
你可以这样做:
@user_client = Client.find(params[:client_id] || params[:id])
因此,如果一个为零,那么另一个将作为id输入。
按顺序排列它们意味着如果有:client_id
,它将始终抓住它。
但危险的项目是链接末尾的id被称为:id
,所以如果你想要识别记录,可能会有一些混乱。请保持警惕。