2013-05-03 45 views
0

我有一個Rails應用程序,它包含多個控制器(用於我的網站的不同頁面)。一個普通文本頁面的控制器,單獨用於圖庫等。現在,我需要的是我的所有頁面的可排序菜單。複雜導軌應用程序的可排序菜單

我創建的模型稱爲MenuItems,其中有一個位置,數量和多態關聯到所有需要排序的模型:

class MenuItem < ActiveRecord::Base 
    belongs_to :sortable, :polymorphic => true 
end 

問題是,一些的MenuItems的應指向相關模型實例本身(例如show常規文本頁面的動作),在這裏我的關聯將執行此操作。但我還需要在菜單中列出index動作(如圖庫列表頁面),並且要實現這一點,我需要在模型和控制器中編寫一些複雜和不清晰的邏輯,或者爲url添加另一個字段,管理員填充這些網址的一種界面。

它看起來很笨拙,從我的經驗來看,如果你用複雜的方式在rails中做某些事情,那麼你做錯了。但是最好的辦法是什麼?您通常如何處理應用程序中的複雜菜單?

回答

0

我其實不介意MenuItem的方法 - 這是一個很大的功能,你顯然不應該擔心你現有的模型。然後我會給MenuItem一些邏輯來解決URL應該指向:

def url 
    case sortable 
    when Picture 
    # ... 
    when Gallery 
    # ... 
    end 
end 

這不是理想的MenuItem模型知道所有這些其他車型,所以你可以考慮把這個邏輯在助手/裝飾。