我有一個側欄會根據用戶的位置(其中包括;實際上還有用戶是誰,她的個人資料完成了多少等等)來旋轉其內容。如何根據使用的路由條件顯示側欄?
我想要的是一個幫助器,用於檢查當前頁面的控制器,操作和ID。
- 如果控制器是
JobsController
和動作是show
或index
,使用部分_sidebar_add_your_job
。 - 如果控制器
UsersController
和動作是show
或index
,使用部分_sidebar_add_your_cv
。
幫助我的簡化版本,在app/helpers/sidebar_helper.rb
是:
module SidebarHelper
def sidebar_partial
if partial
return "sidebar_#{partial}"
end
end
# Determines what sidebar partial to render.
def partial
partial = nil
if ((section == :jobseekers) && current_user.nil?)
partial = :add_cv
elsif ((section == :employers) && current_user.nil?)
partial = :add_job
end
partial
end
def section url = nil
url = request.fullpath if url.nil?
section = nil
if (url == root_path || url.match(/^\/jobs/))
section = :jobseekers
elsif (url.match(/^\/employer/) || url.match(/\/users\/[a-z0-9]+/))
section = :employers
end
section
end
end
尤其是最後一部分,我在那裏對陣網址定期expresssions是醜陋的失敗,對相當多的情況下。最值得注意的是:users/sign_in
,users/sign_up`等等。我不願意開始維護這些例外的整個黑名單,它感覺太難看,並且與路線耦合太緊密。
我該如何最好地實現一些基於URL或控制器&動作和 - 未來 - 在一些更簡單的條件下的條件部分包含,例如當前用戶的角色和狀態?
如何在控制器中對控制器及其當前頁面/請求的操作進行測試?
請http://www.postal-code.com/mrhappy/blog/2007/01/ 18/rails-瞭解當前動作的視圖/並告訴它是否正在尋找 – Bohdan
您基本上不在乎/ users /後面的內容,因此可以輕鬆地改進正則表達式。另外,你應該在所有的視圖和助手中使用@controller變量(可以玩)。 – socjopata
@Bohdan,這確實是我正在尋找的解決方案:儘管我很容易。如果您將其粘貼爲答案,我可以接受它。謝謝。 – berkes