development

레일-컨트롤러 조치 이름을 문자열로

big-blog 2020. 6. 9. 07:43
반응형

레일-컨트롤러 조치 이름을 문자열로


Rails 질문이 있습니다.

컨트롤러 작업 내에서 컨트롤러 작업의 이름을 얻으려면 어떻게합니까?

예를 들어

def create
  logger.info("create")
end

나는 같은 것을 쓰고 싶다

def create
  logger.info(this_def_name)
end

얻는 방법은 무엇입니까 this_def_name?


레일스 2.X :@controller.action_name

레일스 3.1.X : controller.action_name,action_name

레일스 4.X :action_name


Rails 액션의 특정 경우 (현재 메소드 이름을 얻는 일반적인 경우와 달리) params[:action]

또는 작업 / 방법 이름이 로그 메시지가 아닌 형식으로 포함되도록 Rails 로그 형식을 사용자 정의 할 수 있습니다.


컨트롤러 이름 :

<%= controller.controller_name %>

return => '사용자'

액션 이름 :

<%= controller.action_name %>

return => '쇼'

신분증:

<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>

return => '23'


이 스 니펫은 Rails 3에서 작동합니다

class ReportsController < ApplicationController

  def summary
    logger.debug self.class.to_s + "." + self.action_name
  end

end

인쇄합니다

. . .
ReportsController.summary
. . .


mikej의 대답은 매우 정확하고 도움이되었지만 내가 알고 싶었던 것은 현재 메소드 이름을 레일로 얻는 방법이었습니다.

self.current_method로 가능하다는 것을 알았습니다.

http://www.ruby-forum.com/topic/75258 에서 쉽게 찾을 수 있습니다 .


나는 방금 똑같이했다. 도우미 컨트롤러에서 수행했습니다. 내 코드는 다음과 같습니다.

def get_controller_name
  controller_name    
end


def get_action_name
  action_name   
end

이 메소드는 현재 제어 자와 조치 이름을 리턴합니다. 그것이 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/1244921/rails-controller-action-name-to-string

반응형