2013-04-25 21 views
1

我有一個稱爲Update的多態模型。通常情況下,我可以提供它的相關updatable模型簡單:Rails:渲染名稱空間多態部分

<%= render @update.updatable %> 

不幸的是,如果我從命名空間中的控制器中調用這個方法,那麼Rails會嘗試命名空間中的視覺路徑以及,搜索admin/reviews/review而比reviews/review。這導致類似的錯誤:

Missing partial admin/reviews/review 

通常我可以硬編碼一種變通方法,如:

<%= render :partial => "/reviews/review", :locals => {:review => @update.updatable} 

這將是罰款,如果聯想不是多態的,但因爲它是,我會如果updatable不是Review以外的任何其他內容,則會出錯。不幸的是,我有幾十個可能的updatable s,並且通過它們分支case聲明會很麻煩。

有沒有更簡單的方法,我沒有想到?

回答

5

您可以定義模型中的部分路徑。它是這樣的:

class Review 
    def to_partial_path 
    "/reviews/review" 
    end 
end