form으로 전달되는 params를 분석해보자
동작하는 순서를 따라가면서 분석함
form_with
에서 params
을 분석해보자
form_with
에서 params
을 분석해보자흠... 어렵군
1. form_with
로 인해 생성되는 html
파일을 개발자 도구로 분석하자
form_with
로 인해 생성되는 html
파일을 개발자 도구로 분석하자input box
를 보면name="post[title]"
와name="post[content]"
을 볼 수 있다. (hoho
는 나중에 필터링 해야함 )
2. 제출 버튼을 누르기 전에 액션 메서드와 VIEW를 조금 수정하자
버튼을 누르면
create
액션 메서드가 실행이 되고 바로 다른 페이지르redirect
되어 버린다. 그렇게 되면create
액션 메서드를 디버깅 할 수 없다.create
메서드에서 실행되는 부분을 다 지우자.이후에는
create
액션 메서드와 소통하는view
를 만들자.create.html.erb
를 만들면됨.
3. 제출 버튼을 누르고 그 결과를 확인해보자
params
의 클래스 이름은ActionController::Parameters
params
는 내부적으로해쉬
의 형태를 갖는다입력값은
post
를key
로 하는value
에 들어있다. ({"title"=>"This is Title ....."}
value
또한 해쉬다.)위 분석을 통해
input 박스
에 입력값을 넣고 제출을 누르면name=객체[속성]
,입력값
이 아래처럼 들어오게 된다는 것을 알았다.
4. 입력값 가져오기
우리의 입력값이 아래와 같다는 걸 알았다. 그리고
params
객체의 클래스 이름이ActionController::Parameters
라는 것도 알게됐으니 공식홈페이지 의 설명을 잠깐 보고오자.현재
params
는 5 쌍의key - value
를 갖고 있다.authenticity_token
- 보안관련. 나중에 보자.post
- 우리가 입력한 데이터가 들어가있다.commit
- 이건 뭔지 모르겠다.controller
- 컨트롤러action
- 액션 메서드
이제 순서를 생각해보면 아래와 같다.
params
에서 2번의post
를 키로 하는value
를 가져온다.value
는 해시의 형태를 갖고 있다. 해시의key
는 모델 객체의속성
이다.value
에서 모델 객체에 속하지 않는key
를 필터링 한다.
위의 1번의
post
를 가져오는 방법은2번에서 필터링 하는 방법은 (필터링을 하는 이유)
5. 입력값을 이용해 새로운 모델 객체 만들기
4번의 최종 결과는 모델을 새로 만드는데 필요한 데이터다.
그리고 이 데이터는 해시의 형태다.
따라서 이제
create
액션 메서드에서 새로운 모델 객체를 만들자.
Last updated