Romantic Developer : )

(Ruby on Rails) CRUD 개념으로 게시판 실습해보기(2. Create) 본문

Romantic Developer/Ruby on Rails

(Ruby on Rails) CRUD 개념으로 게시판 실습해보기(2. Create)

Romantic_Developer 2018. 5. 20. 12:00

안녕하세요 영감을 주는 개발자 '방민방민'입니다.


다른 이야기는 빼고 바로 시작하도록 하겠습니다.


1. 개념


CRUD 에서 Create ( 새로운 게시물 생성) 에 대한 내용을 다루고자 합니다..


2. 실습


Create 라는 기능하는 콘트롤러는 다음의 두가지로 구성될 것입니다.

new 는 실제 사용자에게 보여지는 페이지로 사용자로부터 데이터를 받아오는 역할을 할것이고


create 는 사용자에게 보여지지는 않지만 new 에서 받아온 데이터를 이용하여 

실제 게시물을 생성하는 역할을 할것입니다.


<notes.controller.rb 파일의 create 파트>

#Create def new #사용자에게 보여질 create 페이지 end def create #사용자의 데이터를 받아와서 내부에서 게시물을 생성 end


new 는 사용자에게 보여지는(view) 파일임으로 view 폴더 내부에 사용자에게 보여질 new.html.erb 페이지를 생성해 줍니다. 그리고 라우팅을 통해 아래와 같이 입력하여 사용자로부터 new 요청을 받으면 new 페이지를 보여주도록 합니다.


<routes.rb>

Rails.application.routes.draw do get 'notes/new' => 'notes#new' #사용자로부터 new 페이지를 요청받으면 new 페이지를 보여줌 end


new 가 나타날 view 페이지에 아래와 같이 입력한 뒤에 실행해 보면 웹페이지가 new 페이지를 출력해 주는것을 확인할 수 있습니다.

 새글을 작성해 보아요

참~ 쉽죠?????


이제 정식으로 html 코드를 활용하여 /notes/new 에서 사용자의 데이터를 받아올 수 있도록 

아래의 코드와 같이 new.html.erb 파일에 입력합니다.


<new.html.erb>

⁢⁢<p1>새글을 작성해 보아요</p1>
<form action="/notes/create">
    <input name="input_title" type="text">
    <input name="input_content" type="text">
    <input type="submit">
</form>


위의 코드 input 이나 form 태그에 관한 내용은 이 포스팅의 의도와 벗어나기때문에 생략 하겠지만

사용자로부터 input_title 과 input_content 를 받아 /notes/create 라우팅으로 보내주겠다는 뜻입니다.

이렇게 만든 new.html.erb 는 아래와 같은 화면을 출력합니다.


이제 사용자로부터 받은 데이터인 input_title과  input_content는 create 콘트롤러를 향해 전달되었습니다..

이를 활용하기 위해서는 사용자로부터 날라온 데이터는 params[:name] 으로 사용이 가능합니다.

따라서 사용자에게 입력된 input_title 과 input_content 를 이용하여 create controller에

아래와 같이 입력해 줍니다.


note 라는 변수 선언과 Note.create 를 통해 새로운 note 테이블을 생성해 줍니다.


<notes_controller.rb 의 create 파트>

⁢⁢
    def create #사용자의 데이터를 받아와서 내부에서 게시물을 생성
        note = Note.create title: params[:input_title], content: params[:input_content]
        redirect_to '/notes/new'
    end


이후 /note/new 페이지에서 아래와 같이 입력하고 제출을 클릭해봅니다.



그러면 다시 아무것도 적혀있지 않은 new 페이지로 돌아오는 것을 확인할 수 있는데, 

이는 create controller에서 redirect_to '/notes/new 명령어를 통해 다시 notes/new 라우팅으로 

이동했기 때문에 다시 새로운 게시물을 생성하는 페이지로 이동해준 것이라는 것을 확인할 수 있습니다.


실제로 /rails/db 를 통해 확인해 보면 입력한 데이터(게시물)이 등록되었음을 확인할 수 있습니다.




이상으로 오늘은 Create 단계에 대하여 실습을 진행해 보았습니다.


지금까지 영감을 주는 개발자 '방민방민' 이었습니다. 감사합니다 :)