2012-04-27 4 views
0

User 모델과 Account 컨트롤러가 있습니다. 사용자가 /account URL을 방문하면 사용자 이름이 포함 된 텍스트 입력란과 양식을 제출하기위한 버튼이 포함 된 양식이 표시됩니다.GET 또는 POST를 기반으로 양식 표시 또는 처리 여부 확인

내 경로에 match '/account' => 'account#index'이 있습니다. 내 컨트롤러에서

나는이 방법이 정의되어 있습니다

def index 
    @user = User.find(session[:user_id]) 
end 

이제 양식을 제대로 보여주고도 제대로 설치됩니다 (사용자 인증이 before_filter에서 발생 확인). 그러나 양식 제출 여부를 알 수있는 방법을 알아야합니다. 레일 방식이란 무엇입니까? POST 요청이 /account 인 것을 보는 별도의 경로가 있습니까? 또는 index 메소드에서 요청 유형을 감지합니까? 양식 제출 여부는 언제 결정합니까?

답변

1

양식이 색인 컨트롤러 내부로 제출되었는지 감지 할 수 있습니다. 나는 params 해시가 키를 설정한다고 생각한다 : 요청에 사용 된 메소드에 대한 메소드.

다른 방법은 경로를 다시 시도하는 것입니다.

get '/account' => 'account#index' 
post '/account' => 'account#post_action' 

을 그리고 컨트롤러 내부에 당신은 할 수 : 대신 match '/account' => 'account#index' 당신은 할 수

def index 
    @user = User.find session[user_id] 
end 

def post_action 
    @user = User.find session[user_id] 
    if @user.update_attributes params[:user] 
    flash[:notice] = 'Update Successful' 
    render :action => index 
    else 
    flash[:notice] = 'Update Unsuccessful' 
    render :action => index 
    end 
end 
관련 문제