나는 사용자가있는 곳 (실제로는 사용자가 누구인지, 프로필이 끝난 상태 등)에 따라 콘텐츠를 회전시키는 사이드 바를 가지고 있습니다.사용 된 라우팅에 따라 조건부로 사이드 바를 표시하는 방법?
내가 원하는 것은 현재 페이지의 컨트롤러, 작업 및 ID를 대조하는 도우미입니다.
- 는 경우 제어기는
JobsController
및 동작이show
또는index
이다_sidebar_add_your_job
인 부분을 사용한다. - 는 경우 제어기는
UsersController
및 동작이show
또는index
이다_sidebar_add_your_cv
인 부분을 사용한다.app/helpers/sidebar_helper.rb
에서
내 도우미의 단순화 된 버전입니다 : 내가 URL을 상대로 정규 expresssions 일치
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
특히 마지막 부분은, 추한하고 꽤 많은 경우에 실패합니다. 가장 주목할만한 것은 : users/sign_in
, users/sign_up` 등입니다. 나는이 예외의 전체적인 블랙리스트를 유지하기 시작하는 것을 꺼려한다. 그것은 너무 못 생기고 너무 단단히 경로에 연결되어 있다고 느낀다.
URL 또는 컨트롤러 & 조치와 현재 사용자의 역할 및 상태와 같은 몇 가지 간단한 조건에 따라 일부 조건부 부분 포함을 효과적으로 수행하려면 어떻게해야합니까?
도우미에서 현재 페이지/요청의 컨트롤러 및 동작에 대해 어떻게 테스트 할 수 있습니까?
http://www.postal-code.com/mrhappy/blog/2007/01/을 확인하시기 바랍니다 18/rails-knowing-the-current-action-in-a-view/당신이 찾고있는 sth인지 알리십시오. – Bohdan
기본적으로 regexp가 쉽게 개선 될 수 있도록/users/이후에 신경 쓰지 않아도됩니다. 또한 모든 뷰와 헬퍼에서 @controller 변수를 사용할 수 있어야합니다. – socjopata
@Bohdan, 그게 실제로 내가 찾고있는 해결책입니다. 훨씬 더 쉽습니다. 대답으로 붙여 넣으면 받아 들일 수 있습니다. 고마워. – berkes