2013-05-06 47 views
0

我喜歡我的控制器使用請求URL包含的所有id,而不使控制器路由特定。如何查詢嵌套路由中的活動記錄模型,乾式

我的路線:

... 
resources :users do  
    resources :properties 
end 
... 

我的控制器是標準的支架控制器。讓我們看一下指數法:

def index 
    properties = Properties.all 
    respond_to do |format| 
    format.json { render json: properties } 
    end 
end 

def show 
    @property = Property.find(params[:id]) 
    respond_to do |format| 
     format.json { render json: property } 
    end 
end 

問題與路由像/用戶/ 10 /屬性是,它的10不皮卡user_ID的,而不是用它來創建查詢。它查詢所有屬性而不是子集。

我也修改網址瑣碎以查看其他用戶屬性,只需玩「id」,不需要找到匹配「user_id」+「id」,因爲「user_id」被忽略。

當然,我可以在代碼中明確表示,但這會使它具有特定的路由。我喜歡在非嵌套路由的上下文中使用控制器。

是否有標準配方來處理?像查看所有以「_id」結尾的參數?

回答

1

退房https://github.com/josevalim/inherited_resources 它會幫助你這個(以及更多)

否則,你需要在你的索引操作檢查查詢參數是存在的,如果是這樣,對PARAM查詢(Properties.where(user_id:params [:user_id])

+0

inherited_resources看起來很棒,它確實有很多,它有什麼缺點嗎? – 2013-05-07 00:44:37

+0

不是我遇到過的,你必須考慮你的控制器有點不同,但這是件好事 – cpuguy83 2013-05-07 01:17:57

+1

如果你喜歡,也可以查看https://github.com/plataformatec/has_scope – cpuguy83 2013-05-07 01:19:27