구 원트노/멋사 - 1학기 정규

[before model 1] rails & form에 대하여


rails & form에 대하여-어디로 어떻게 무엇을


이번에는 form에 대해서 이야기 해보겠습니다.


특히 ruby on rails에서 form을 언제 사용하는지?, 어떻게 사용하는지에 대해 설명해보겠습니다.




일단 form은 언제 사용될까요?


웹사이트에서 서버로 데이터를 전송할 때 사용됩니다.



form은 간단히 서버로 보내는 편지 봉투라고 생각하면 되는데


form에는 3가지 정보가 담겨있기 때문입니다.


어디로 보낼지(주소), 어떻게 보낼지(우표??) , 무엇을 보낼지(편지 내용)


1
2
3
4
5
6
7
<form action="어디로(주소)" method="어떻게(GET or POST)">
 
    <input type="text" name="무엇을(내용)" />
 
    <button type="submit">보내자</button>
 
</form>
cs


이런 코드를 통해서 입니다.




잘 와 닿지는 않죠?


form을 사용했던 상황에 대한 구체적인 예를 들어보겠습니다.


여러분이 2주차에 했던 것 기억하나요?


form을 이용해서 다음 페이지에 입력한 내용을 전달하는 사이트를 만들었습니다.


이런 사이트입니다.


입력 란에 글을 입력하고 제출을 누르니깐 다음페이지에서 입력한 '안녕하세요'가 출력되었습니다.


굉장히 간단하죠?


여기까지가 우리가 보는 화면이었구요.


rails에서 이것을 어떻게 작동했는지 알아보겠습니다.




입력한 값이 controller로 전송되어 params[:title]을 통해서 @title에 저장되었습니다.


그래서 다음 페이지인 write 페이지에서 입력한 값이 @title을 통해서 전달된 것을 확인할 수 있습니다.


그런데 의문은 어떻게 입력한 값이 controller로 갔을까요??



바로 route를 거쳐서 갔기 때문입니다.


route.rb 파일에 


1
post '/write' => "home#write"
cs


라고 작성했기 때문이죠.


이 코드의 뜻은 


/write' 주소로 post 방식으로 접속하면 home 컨트롤러의 write 액션(def write와 end 사이 부분)으로 보내라!!


그래서 입력한 값이 home 컨트롤러에 write 액션으로 가게 되었습니다.


하지만 또 의문이 어떻게 해야 저 '/write' 주소를 통해서 내 입력 값을 전달할 수 있을까요?


여기서 우리는 form을 사용합니다!


아까 form은 언제 쓴다고 했죠?? 데이터를 서버에 전달 할려고 할 때입니다.


form은 편지 봉투라고 했죠? 입력 값을 담아서 서버(컨트롤러)로 보내야 합니다.


아까 form 코드를 봅시다.


1
2
3
4
5
6
7
<form action="어디로(주소)" method="어떻게(GET or POST)">
 
    <input type="text" name="무엇을(내용)" />
 
    <button type="submit">보내자</button>
 
</form>
cs


우리는 '/write'주소에 post방식으로 데이터를 보내려고 합니다.


그렇다면 action 부분 즉 주소 부분에 '/write'를 적어주면 됩니다.


그리고 method 부분 어떻게?는 post방식으로 보내려고 하기 때문에 POST를 적어줍니다.


1
2
3
4
5
6
7
<form action="/write" method="POST">
 
    <input type="text" name="무엇을(내용)" />
 
    <button type="submit">보내자</button>
 
</form>
cs


현재 코드를 보자면 여기까지 완성했습니다.


남은 것은 무엇이죠? 무엇을 보내야 할까?입니다.


이는 name을 사용합니다. 


입력 창(input, textarea, etc...)에 이름을 지정해서 그 이름을 통해 입력 창에 입력한 값을 가지고 오는 겁니다.


우리는 이 이름을 'title'로 지정하겠습니다. (이름은 아무렇게 지어도 되지만 의미의 맞게 명명하는게 이해하는데 도움이 됩니다.)


1
2
3
4
5
6
7
<form action="/write" method="POST">
 
    <input type="text" name="title" />
 
    <button type="submit">보내자</button>
 
</form>
cs


이제 코드가 완성되었습니다. 


마지막 줄 button의 역활은 'submit type의 버튼을 누르면 form에서 지정한 곳으로 데이터를 전송하게 된다...'입니다.


참고로 


1
<input type="submit" value="보내자" />
cs


이 것도 같은 의미입니다.




이제 흐름이 보이시나요?


순서대로 보면 


1. index.erb에서 form을 사용해서 /write로(어디로) POST(어떻게)방식을 통해 title(무엇을)을 보냈구요.


2. route.rb에서 post방식으로 연결된 /write를 home 컨트롤러 write액션으로 보냈습니다.


3. home_controller에서는 write 액션에서 params[:title]을 통해 입력 받은 title을 @title로 저장해서
   자동으로 연결된 write.erb에 출력시켰습니다.



여기까지 간단한 예시로 보는 form 사용 방법, rails에서 form 사용 방법이었습니다.


궁금하신 점 있으시면 댓글 남겨주세요!!


긴글 읽어주셔서 감사합니다!