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
이 메소드는 현재 제어 자와 조치 이름을 리턴합니다. 그것이 도움이되기를 바랍니다.
답변
