Programing

뷰에서 현재 컨트롤러의 이름을 얻을 수 있습니까?

lottogame 2020. 5. 8. 08:14
반응형

뷰에서 현재 컨트롤러의 이름을 얻을 수 있습니까?


뷰 내에서 현재 컨트롤러가 무엇인지 알아내는 방법이 있습니까?

내가 이것을 알고 싶은 이유의 예 : 여러 컨트롤러가 동일한 레이아웃을 공유하는 경우 레이아웃 ERB 파일에 컨트롤러를 기반으로 현재 페이지의 메뉴 항목을 강조 표시하려는 부분이있을 수 있습니다.

어쩌면 그것은 나쁜 접근법입니다. 그렇다면 더 선호하는 방법은 무엇입니까?

그래도 현재 컨트롤러의 이름을 얻는 방법에 대해 알고 싶습니다.

(분명히 @controller_name = 'users'각 컨트롤러 에 무언가를 넣을 수는 있지만 Rails가 이미 배후에서 한 일처럼 보입니다. 따라서 내장 방법이 있는지 궁금합니다.)


controller_name 현재보기를 제공하는 데 사용되는 컨트롤러 이름을 보유합니다.


또한 Rails Guides에는 다음과 같이 표시되어 있습니다.

params 해시는 항상 : controller 및 : action 키를 포함하지만 이러한 값에 액세스하려면 controller_nameaction_name 메소드를 대신 사용해야 합니다.

ActionController 매개 변수

CSS 클래스가 있다고 가정 해 봅시다. CSS 클래스 active는 페이지가 현재 열려있는 링크에 삽입해야합니다 (아마 다른 스타일을 지정할 수 있음). 동작 이있는 static_pages컨트롤러 가있는 경우 about보기에서 다음과 같이 링크를 강조 표시 할 수 있습니다.

<li>
  <a class='button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>' href="/about">
      About Us
  </a>
</li>

#to get controller name:
<%= controller.controller_name %>
#=> 'users'

#to get action name, it is the method:
<%= controller.action_name %>
#=> 'show'


#to get id information:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
#=> '23'

# or display nicely
<%= debug Rails.application.routes.recognize_path(request.url) %>

참고


controller_path현재보기를 제공하는 데 사용되는 컨트롤러의 경로를 보유합니다. (예 :) admin/settings.

controller_name현재보기를 제공하는 데 사용되는 컨트롤러 이름을 보유합니다. (예 :) settings.

참고 URL : https://stackoverflow.com/questions/3757491/can-i-get-the-name-of-the-current-controller-in-the-view

반응형