2

我允許管理員爲他們的頁面選擇不同的佈局。現在它只是一個文本輸入,他們輸入名稱。這意味着他們必須提前知道名稱。是否有可能獲得軌道中的可用佈局列表(包括來自引擎的佈局)?

如果他們犯了一個錯字,它會引發一個異常,所以我通過在控制器中執行以下操作檢查佈局是否存在,如果它不存在,它將默認爲「應用程序」。

lookup_context.template_exists?(@page.layout, "layouts") 

如果我能得到一個佈局列表,我不需要檢查控制器了。

我已經看過actionview,什麼都沒發現。 我可以使用Dir獲取佈局文件的列表,但我需要包含引擎中的所有佈局。

所以我想知道是否有人知道一種方式來生成所有可用的佈局,包括引擎的列表?

回答

3

按照慣例,所有佈局都出現在app/views/layouts目錄中。默認情況下可用的佈局是該目錄中的文件。爲了讓佈局列表,試試這個:

@layouts = Dir.glob('app/views/layouts/*') 
for layout in @layouts 
    puts layout 
end 

描述here如果您已定義的自定義路徑爲你的應用程序引擎,你必須明確地添加這些佈局:

@layouts << Dir.glob('custom_engine_path/*') 
+0

謝謝,我們建議'Dir.glob(Rails.root.join('app','views','layouts')。to_s +'/ *')'避免相對的使用Dir是我們最後去的方式 – 2013-03-21 08:23:40

+0

路徑麻煩。 – 2015-03-29 21:09:05