rails quiz어플을 만들어보자.
이 포스트에서는 CRUD(퀴즈등록,수정,삭제,일람,상세)기능을 만들어 보기로한다.
route설정추가
config/routes.rb
에resources :writing_quizzes
를 추가
rake routes
결과 확인
루트 설정을 먼저 만들어놓고 rake routes의 결과를 보면서 controller,view를 만들어주는게 초보자인 나에게는 나침반같아서 편했다.
모델생성
문제,정답,설명 컬럼을 추가
컨트롤러 생성
처음에 이런식으로 단수형으로 적었다가 나중에 꼬여서..위와 같이 controller명은 복수형으로 적어준다.
DB설정
rails config/database.yml설정과 direnv를 이용한 환경변수관리을 참고해서 DB설정을 해준다.
DB생성
테이블 생성
여기까지 설정에 대한 동작확인
controller에new메소드 추가
rails console기동
이하와 같이 나오면 성공
view동작확인
다음으로는 view동작확인을 해보자
new.html.erb에 동작확인용 텍스트를 입력
rails기동
http://localhost/writing_quizzes/new
URL에서 악세스해서 Hello Word. 표시된다면 성공
등록페이지 작성
동작확인이 끝났으니 실제로 퀴즈를 등록하는 페이지를 만들어보자
이하와 같은 파일 을 추가
등록페이지 post설정
뷰에서 등록버튼을 누르면 DB에 저장할 수 있게끔 설정을 해보자
이하와 같이 create메소드를 만든다.
http://localhost/writing_quizzes/new
에서 폼을 입력후 등록버튼을 누른후 db에 데이터가 추가되는 것을 확인
(리다이렉트 설정을 안해줬기 때문에 화면에서는 아무런 변화가 없음)
인덱스페이지 작성
등록한 퀴즈들의 일람을 표시하는 페이지를 만들어보자
퀴즈등록후 리다이렉트 설정
퀴즈를 등록후 index페이지로 리다이렉트 하는 설정을 추가해보자.
처음에는 이런식으로 redirect설정을 했는데
redirect_to @wquiz
show페이지가 아직 존재하지므로 에러가남.
수정기능 추가
퀴즈를 수정할 수 있게해보자
수정페이지에서 사용하는 view는 new에서 만든 설정과 동일하게 사용가능하다.
즉 컨트롤러에서 해당 존재하는 값을 넘겨주면edit 안넘겨주고 선언만하면 new인것이다.
여기서는 다루지 않지만 new와edit의view는 중복이므로
이럴땐 layout으로 만들어서 _form.html.erb
이란걸 만들어서
new,edit에서 참조하는 형태로 만드는게 좋다.
동작확인
http://localhost/writing_quizzes/2/edit
에 들어가서 정상적으로 수정되는지 확인
상세페이지 추가
다음은 상세페이지를 만들어보자
상세페이지안에는 해당quiz를 수정 할 수 있는 버튼을 넣어보자
show.html.erb
동작확인
http:/localhost/writing_quizzes/2
에 들어가서 상세페이지가 표시되는것을 확인
삭제로직 추가
마지막으로 삭제로직을 만들어보자
위에서 만든 상세페이지에서 삭제버튼을 추가하자
그 다음엔 컨트롤러에 destroy로직을 추가
동작확인
http://localhost/writing_quizzes/2
에들어가서 삭제버튼을 누르고 해당 컬럼이 삭제되는것을 확인
여기까지 퀴즈등록,수정,삭제,일람,상세 페이지를 만들어봤다.