TIL / 20211017 / RubyOnRails Route/Controller/View
설치
링크 참조
Rails 철학
- DRY : 같은 코드를 반복하지 말 것
- 설정보다 관습 : 기능에 대한 해결책을 제시해 설정 파일을 줄여줌
- REST : 리소스와 표준 HTTP 요청에 적합한 웹 개발
MVC (모델, 뷰, 컨트롤러 아키텍쳐)
-
Models : 데이터베이스 테이블과 상호작용하는 규칙들 관리
-
Views : 유저 인타페이스 (html 파일)
-
Controllers : 모델과 뷰를 연결하는 역할
레일즈의 컴포넌트
- Action Pack : 액션 컨트롤러과 액션 뷰를 포함하는 젬(MVC중 VC)
Action Controller : 레일즈로 들어온 요청 처리 ex.세션관리, 템플릿 렌더링, 리다이렉트 관리
Action Dispatch : 웹의 요청을 받아들여 원하는 곳으로 연결
Action View : 뷰 관리 ex.템플릿 렌더링, 중첩폼(Nested),조각(partial)템플릿, AJAX 지원관리 - Action Mailer : 내장된 메일 서비스 프레임워크
- Active Model : 액션 팩(Action Pack) 서비스와 ORM 젬과 인터페이스를 정의
- Active Record : 데이터 추상화 , 기본 CRUD 기능 , 객체들 간 관계 정의 기능
- Active Resource : 웹 기반의 자원을 로컬 객체의 CRUD 처럼 매핑시킴
- Active Support : 레일즈가 사용하는 유틸리티 클레스와 표준 루비 확장 모음
- Railties : 여러 프레임워크와 플러그인을 이어주는 레일즈 코드
파일 구조 복잡 이유는 CoC 때문 각 요소가 맞은 역할이 다르기 때문
요소의 역할 파악하고 규칙에 따라 코드 작성시 최고 생산성 보장
Rails 개발할 때 꼭 필요한 부분
1.app/controllers : MVC 패턴 중 controller 해당 코드 담김
2.app/views : MVC 패턴 중 view에 해당 코드 담김. view는 controller 내부의 acrion과 일대일 매칭 되어 설정됨
3.app/models : MVC 패턴 중 model 역할을 수행. 내부 DB와 연동되어 관련 테이블을 class화 시킨 것
4.config/routes.rb : config 디렉토리에 포함되어있는 routes.rb 파일은 클라이언트에서 요청하는 url을 특정 controller의 action과 매칭 시킴
5.db/migrate : 테이블을 만들기 위한 코드들이 여기에 파일형태로 생성됨
6.db/schema.rb : 실제로 db에 테이블이 생성되면 생성되는 파일임 여기서 스피마 확인 가능
7.vendor/Gemfile : Ruby 라이브러리를 Gem이라 부름 여기에 Gem을 여기에 작성해 Rails 프로젝트에 추가가능
REST
- 자원 표현을 위해 자원 식별자 사용 (가령 URL)
- 시스템 컴포넌트 간에 자원 상태 교환
주요 명령어
1.hello라는 레일즈 프로젝트 생성 명령어
rails new hello cmd창에 입력
- 실행 명령여 (내장된 기본 서버 포트3000번으로 동작)
rails s
서버에서 페이지 구동 방식
- 주소 Uri을 통한 http 요청 분석 :route.rb
- 요청 관련 내부처리 : controller
- 요청에 맞는 페이지로 응답 : view
Rails로 페이지 만들기
1.컨트롤러 파일 생성
$ rails generate controller home
실행 후 app/controllers/home_controller.rb 파일 생성
1.views 디렉토리의 하위 디렉토리는 controller 이름과 동일하게,
2.디렉토리 안에 포함된 파일 이름은 action 이름과 동일하게 맞추면 controller와 view가 자동으로 연결됨
2.controller 코드 작성
def 와 end 사이에 있는 내용을 action이라 부름
동일한 이름을 view와 자동으로 매칭
So rails에서 action은 서비스를 동작할 수 있는 행동임
행동은 사용자가 볼 수 있는 뷰 or 동작 로직이다.
3.view 코드 작성
index.html.erb 파일에 html 코드 추가
4.route 설정
config/routes.rb 파일에 코드 추가
Rails.application.routes.draw do
# 코드 시작
root "home#index"
get "home/index" => "home#index"
# 코드 끝
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
설명:
root "home#index" 즉"/" 이 주소로 요청하면 home controller의 index action으로 보내라는 의미이다.(get "/"=>"home#index"와 동일한 코드)
home/index 주소에 get 방식으로 요청하면 home 컨트롤러의 index action으로 연결하라
cf. 규칙: Root 주소 controller#action
핵심정리
rails 서버에 요청을 보내면 요청을 보낸 uri 정보는 route, controller,view 순서대로 이동함
Rails 프로젝트에서 페이지를 만들려면
1.route에서 정의 된 uri
2.uri와 연결된 controller,action
3.controller, action과 연결된 view
다른페이지로 데이터 전달하기
1.form을 통해 서버(controller#action)로 데이터 전송
2.action에 있는 데이터를 연결된 뷰로 전달하여 출력
전체코드
routes.rb
Rails.application.routes.draw do
root "home#index"
get 'home/index'
get 'home/next'
# 코드 시작
#root "home#index"
#get "home/index" => "home#index"
# 코드 끝
# For details on the DSL available within this file,
#see http://guides.rubyonrails.org/routing.html
end
home_controller.rb
class HomeController < ApplicationController
def index
end
def next
end
end
index.html.erb
<h1>
Home#index
</h1>
<p>
Find me in app/views/home/index.html.erb
</p>
<a href="/home/next">home/next로 이동</a>
next.html.erb
<h1>
Home#next
</h1>
<p>
Find me in app/views/home/next.html.erb
</p>
<a href="/home/index">home/index 이동</a>
참고 자료
구름 강의 한눈에 읽는 루비온 레일즈 : 링크
Author And Source
이 문제에 관하여(TIL / 20211017 / RubyOnRails Route/Controller/View), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jeongyunjang/TIL-20211017-RubyOnRails시작하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)