링크 참조
Models : 데이터베이스 테이블과 상호작용하는 규칙들 관리
Views : 유저 인타페이스 (html 파일)
Controllers : 모델과 뷰를 연결하는 역할
파일 구조 복잡 이유는 CoC 때문 각 요소가 맞은 역할이 다르기 때문
요소의 역할 파악하고 규칙에 따라 코드 작성시 최고 생산성 보장
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 프로젝트에 추가가능
1.hello라는 레일즈 프로젝트 생성 명령어
rails new hello cmd창에 입력
rails s
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>
구름 강의 한눈에 읽는 루비온 레일즈 : 링크