Header

  1. View current page

    재선아빠님의 노트

Profile_image?t=1224119607&type=big
21

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)

You must log in to leave a comment. Please sign in.