복붙노트

[RUBY-ON-RAILS] 내가보기에 현재 컨트롤러의 이름을받을 수 있나요?

RUBY-ON-RAILS

내가보기에 현재 컨트롤러의 이름을받을 수 있나요?

현재의 컨트롤러는 뷰 내에서 무엇인지 알아낼 수있는 방법이 있나요?

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

어쩌면 나쁜 방법이다. 그렇다면,이 일을 더 선호하는 방법은 무엇입니까?

그래도, 현재 컨트롤러 어느 쪽이든의 이름을 얻기에 관하여 알고 관심이 있어요.

(물론 나는 각 컨트롤러에 @controller_name = '사용자'처럼 뭔가를 넣을 수 있습니다,..하지만 이미 무대 뒤에서했던 것 것 레일의 종류 것 같아 난 그냥 궁금 해서요 그래서이 있다면 내장 방식)

해결법

  1. ==============================

    1.controller_name 현재 뷰를 제공하기 위해 사용되는 컨트롤러의 이름을 유지한다.

    controller_name 현재 뷰를 제공하기 위해 사용되는 컨트롤러의 이름을 유지한다.

  2. ==============================

    2.레일 가이드, 그것은 말합니다 :

    레일 가이드, 그것은 말합니다 :

    ActionController 매개 변수

    그럼 당신은 (아마도 그래서 당신은 다른 스타일을 할 수있는) 그 페이지 현재 열려있는 모든 링크를 삽입해야 활성 CSS 클래스를 가지고 가정 해 봅시다. 당신이 행동에 대한과 static_pages 컨트롤러가있는 경우, 당신은 다음보기에서과 같이 링크를 강조 표시 할 수 있습니다 :

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

    3.

    #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) %>
    

    참고

  4. ==============================

    4.controller_path 현재 뷰를 제공하기 위해 사용되는 컨트롤러의 경로를 보유하고있다. (예 : 관리 / 설정).

    controller_path 현재 뷰를 제공하기 위해 사용되는 컨트롤러의 경로를 보유하고있다. (예 : 관리 / 설정).

    controller_name 현재 뷰를 제공하기 위해 사용되는 컨트롤러의 이름을 유지한다. (예 : 설정).

  5. from https://stackoverflow.com/questions/3757491/can-i-get-the-name-of-the-current-controller-in-the-view by cc-by-sa and MIT license