2011-08-16 46 views
2

我有嵌套的資源,像這樣Rails的自動嵌套資源拔出資源在路線傭工

resources :users do 
    resources :widgets 
end 

當我有@widget,擺脫我的助手,我需要使用user_widget_path(@widget.user, @widget)正確的路由有什麼辦法告訴導軌自動從@widget對象中拉出用戶?所以我可以使用user_widget_path(@widget)

+0

根據反饋,聽起來好像沒有內置軌道的方式來做到這一點。雖然基於贊成票聽起來像是它會是默認路由助手的體面添加 – Schneems

回答

2

@apneadiving是完全正確的。但是你可以改善一點你的方法:

link_to "user", user_widget_path(@widget.user, @widget) 

可呈現更短:

link_to "user", [@widget.user, @widget] 

UPD

而且,只要你想,你可以重寫user_widget_path

class ApplicationController < ActionController::Base 
    helper_method :user_widget_path 
    private 
    def user_widget_path(widget) 
    super(widget.user, widget) 
    end 
end 

您還應該重寫edit_user_widget_pathnew_user_widget_path。最好把它作爲外部模塊來包裝。

+0

這正是我寫的幫手! +1;) – apneadiving

2

沒有自動方法來做到這一點。但是你可以創建你自己的應用程序幫手,它非常直白。