2010-03-23 76 views
3

我有一個RoR應用程序和模型SomeModel。我對這個模型有了一些看法,我想知道 - 是否有任何方法可以獲得視圖的路徑?當然,我可以用這個模型實例類名查看路徑

m = SomeModel.new 
v = m.class.class_name.pluralize.downcase 

它的工作,但也許你知道一個更好的方法? :)

+0

已經過了一個月沒有回覆海報,沒有更多的答案可能是必要的這個問題。 – 2010-04-29 17:14:40

回答

0

通過控制器層使用模型的視圖。每個視圖都與某些路由/控制器操作相對應。因此,與控制器名稱相關的視圖路徑: app/views/some_controller/{一堆文件} .html.erb

這並非總是如此,您的視圖dirname將引用您的型號名稱。所以沒有找到視圖dirname的通用方法。

你的解決方案是合適的,但不是在所有情況下

1

正如@ fl00r說,不,還有要做到這一點沒有一般方法,因爲所有的視圖的名稱取決於各個應用的實現(不是每個控制器一個資源控制器),但你當然可以寫一些助手,這樣你就不必經常輸入m.class.class_name.pluralize.downcase

module ViewPathHelper 
    def resource_view_path(model_obj, action) 
    "#{model_object.class.class_name.pluralize.downcase}/#{action}" 
    end 
end 

將是這樣做的一種方式。

這似乎是一個有點奇怪的請求 - 你需要什麼視圖路徑?你在做什麼高度多態? (因爲這個東西叫做polymorphic_path ...)

0

如果你覺得你需要模型中視圖的路徑,那麼你很可能將邏輯放入屬於控制器或助手的模型中。您可能會重新考慮如何劃分您的MVC邏輯。

0

to_partial_path做你在問什麼。

這非常方便,尤其是在使用ajax和/或嵌套和多態關係時。

+0

雖然這可能會回答這個問題,但最好包括解決方案的重要部分(通過鏈接提供)以便從您的答案中獲得最佳效果。只有鏈接的答案(這是你現在擁有的)有兩個缺點:通過搜索引擎找不到它,並且一旦鏈接被破壞,它們就無效。請認爲aubout編輯你回答:)謝謝 – cramopy 2017-10-31 12:57:58