2011-09-24 2 views
1

하나의 입력 필드 (텍스트 영역)가있는 양식이 있는데 사용자가 양식을 제출하면 해당 텍스트 영역의 값을 세션에 저장하려고합니다. Rails에서 어떻게 할 수 있습니까?어떻게 텍스트 영역 값을 레일스 세션에 저장합니까?

저는 Devise를 사용하고 있으며, 사용자가 양식을 제출 한 후 사용자에게 보내는 페이지는 나의 Devise 등록 페이지입니다.

그래서 나는 내가 등록의 컨트롤러 액션에서이 같은 필요 상상 :

session[:text_entered] = params() 

을 ...하지만 고안 나에게 등록 컨트롤러를 제공하지 않습니다. 내가 만들어야 하나?

양식을 제출할 때 슈퍼 긴 URL로 붙어 있습니까? POST 또는 GET이어야합니까? 텍스트 매개 변수 값을 URL 매개 변수로 보내지 않고 등록 페이지로 전달하려면 어떻게해야합니까?

죄송합니다. 저는 초보자입니다. 어떤 도움을 주셔서 감사합니다!

+0

텍스트 영역 페이지의 컨트롤러는 어떻게 생겼습니까? –

답변

1

그래서 텍스트 영역이있는 페이지의 컨트롤러가 있으므로 "SomethingsController"라고 해 봅시다. 그리고 해당 페이지의 양식이 제출하는 컨트롤러는 RegistrationsController입니다. RegistrationsController에서 해당 양식의 제출을 ​​처리하는 대신 SomethingsController가 처리하도록해야합니다.

당신은 (그리고 그래, 당신은 POST한다)는 create 조치를 해고, 존재하면 (해시이다 - 당신이 []와의 값에 액세스) params에서 값을 얻을 것이다 SomethingsController에 양식을 POST 때 에 넣으십시오. 작업을 완료하면 사용자를 등록 페이지로 리디렉션 할 수 있습니다. 다음과 같은 내용 :

SomethingsController < ActionController::Base 
    def create 
    if text = params[:text_area_name] && text.present? 
     session[:text_entered] = text 
     redirect_to new_user_registration_path 
    else 
     flash[:error] = "You didn't enter any text!" 
     render :action => :new 
    end 
    end 
end 
+0

"&& text.present?"를 제거해야했습니다. 부분적으로는 효과가 있었지만 잘 설명해 주셨습니다. 고맙습니다! – throwaway

관련 문제