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::Parametersparams는 내부적으로해쉬의 형태를 갖는다입력값은
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
Was this helpful?