ActionController
컨트롤러 환경
컨트롤러는 액션에 필요한 환경을 설정한다. (액션이 호출하는 뷰의 환경도 설정한다)
다음과 같은 접근자 메소드를 통해서 정보를 사용한다.
- action_name (현재처리중인 액션의 이름)
- cookies
- headers
- params
- request
- domain : 요청 도메인 이름의 맨 끝 두 구성요소를 반환한다.
- remote_ip : 원격 IP 주소를 문자열로 반환한다. (클라이언트가 프락시 아래에 있다면 문자열은 하나 이상의 주소를 가질 수 있다)
- env : 요청의 환경 (ex. request.env['HTTP_ACCEPT_LANGUAGE']
- method : 요청 메서드 반환 ( :delete, :get, :head, :post, :put )
- delete?, get?, head?, post?, put?
- xml_http_request?
- response
- session
logger 도 엑션팩 전반에 걸쳐서 사용가능.
사용자에게 응답하기
컨트롤러는 언제나 정확하게 요청이 있을 때마다 한 번씩 사용자에게 응답한다. 즉, 하나의 render 나 redirect_to 또는 send_xxx 메서드를 호출해야 한다는 의미임. 두번 호출하면 DoubleRenderError 가 발생함 !!
템플릿에 랜더링하기
render() : 매개변수 없이 호출할 경우 현재 컨트롤러와 액션에 대한 디폴트 템플릿을 랜더링함.
render(:text => 문자열) : 주어진 문자열을 클라이언트로 보냄.
문자열 반환하기
HTTP 헤더만 반환하기
데이타를 전송하기 (파일?)
어라운드 필터
class BlogController < ApplicationController
around_filter :time_an_action
def index
render :text => 'hello'
end
private
def time_an_action
started = Time.now
yield
elapsed = Time.now - started
logger.info("#{action_name} took #{elapsed} seconds")
end
end
==> 블록 버젼의 around_filter 로 전환 하면 아래와 같다.
around_filter do |controller, action|
started = Time.now
action.call
elapsed = Time.now - started
controller.logger.info("#{action_name} took #{elapsed} seconds")
end
History
Last edited on 04/19/2007 00:45 by JasonPA
Comments (0)