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

[before model 2] rails & route 1

모델 배우기 전에


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

[before model 3] get or post?? Http 메소드란?

[before model 4] rails & params


ROUTE(라우트) 1


rails의 기본, 뼈대는 MVC 패턴이라고 할 수 있습니다.

그렇지만 뼈 만으로는 작동되지 않습니다!! 뼈를 연결해주는 무언가가 필요하겠죠? 

그래서 이번에는 그 역활을 하는 라우트!!

특히 이 라우트의 기초 설명과 기본적인 적용 과정에 대해 설명해보겠습니다.



일단 라우트, 라우팅이란 무엇일까요?


일단 위키백과 검색 결과로는 이렇게 나왔네요.


길을 내다? 라는 의미를 가지고 있습니다.


그렇다면 rails에서 사용하는 라우트의 의미를 볼까요?

특정한 URL 요청을 보냈을 요청을 처리할 대상을 지정하는 또는 그러한 구조 자체를 의미합니다.
Rails 클라이언트에서 요청을 받았을 , 라우팅으로 호출해야 하는 컨트롤러와 액션을 결정합니다.

음 풀어서 말하자면 


클라이언트(뷰)에서 URL(주소와 형식)로 요청을 보내면 그거를 처리해야 할 곳(컨트롤러#액션)으로 보내야 하는데 그 보내는 역활을 하는 것이 라우트다!! 


아까 위키 해석을 바탕으로 이해한다면 요청을 자동차라고 생각하고 그 요청을 도착지(컨트롤러#액션)까지 갈 수 있게 도로를 내준다(경로를 잡아준다)!


예를 들자면



저번 form 포스팅의 코드입니다. 


클라이언트에서 요청을 보냈을 때, 즉 view에서 요청 내용을 담아서 '/write'주소에 POST형식으로 보냈습니다.


이 요청을 처리해야 할 곳은 home컨트롤러의 write액션(home#write)여서 route에서 그 URL과 home#write를 매칭시켜줬습니다.


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

 

이렇게 말이죠. 그래서 우리는 view에서 요청 내용을 무사히 controller에 전달할 수 있었습니다.




이제 직접 route.rb에서 코드를 작성해봅시다.


1
http 메소드 형식 'URL 주소' => '컨트롤러#액션'
cs


이게 가장 기본적인 코드 형식입니다.


제일 먼저 http 메소드 형식을 입력해줍니다. 무슨 말인지 잘 모르겠죠?


우리는 전에도 사용했었어요. get이나 post가 http 메소드 입니다.


이 것에 대한 자세한 내용은 get or post?? Http 메소드란? 에서 보면 됩니다.


일단 get 이나 post를 입력하면 됩니다. (꼭 소문자로 입력하세요!! 대문자가 아닙니다.)


다음은 URL 주소입니다. 요청할 주소를 ''안에다가 입력해주면 됩니다.


그리고 => 다음에는 그 형식과 그 주소로 요청을 보냈을 때 연결될 컨트롤러와 액션을


'컨트롤러 이름#액션 이름' 이런 형식으로 작성해주면 됩니다. 


이제 코드로 예를 들어볼게요.


1
2
3
4
5
get 'home/index' => 'home#index'
 
post 'home/write' => 'home#write'
 
get 'home/list'
cs


1. URL 주소가 '/home/index'이고 형식은 GET일 때 home컨트롤러의 index액션과 연결되어 있는 코드입니다. 


2. URL 주소가 '/home/write'이고 형식은 POST일 때 home컨트롤러의 write액션과 연결되어 있는 코드입니다.


3. 지금까지와 유형이 다르죠? 이거는 URL주소와 다음에 있을 컨트롤러와 액션의 내용이 같을 경우 사용 가능한 축약형 입니다.


그러니까 사실 위 코드는 

  

1
get 'home/list' => 'home#list'
cs


이 코드와 같습니다. 


추가로 최초 접속 했을때 즉 URL주소가 입력되지 않을 때의 경로를 설정할 때 방법을 알려드리겠습니다.


1
root 'home#index'
cs


첫 부분에 root 라고 입력하고 연결할 컨트롤러와 액션을 입력하면 됩니다.




이번에 route에 대해 기본적인 부분을 다루었습니다.


심화 route 기술법은 필수적으로 알아야 할 부분 포스팅 후 진행하겠습니다.



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