app/controllers
app/views
app/models
config/routes.rb
db/migrate
db/schema.rb
vendor/Gemfile
# 터미널 실행 후
& rails generate controller home
app/controllers/home_controller.rb
가 생성app/views/home
디렉토리에서 위에서 생성한 index action과 동일한 이름을 가진 index.html.erd
파일 생성📌
html.erb
파일은 일반 html에 ruby 문법을 사용할 수 있도록 루비를 임베드함
view 디렉토리의 하위 디렉토리는 controller 이름과 동일하게하고 디렉토리 안에 포함된 파일 이름은 action 이름과 동일하게 맞추면 자동으로 연결됨
home_controller.rb
class HomeController < ApplicationController
# 코드 추가 시작
def index
end
# 코드 추가 끝
end
def
와 end
사이에 있는 내용을 action
이라고 부르며 이름이 동일한 view와 자동 매칭함action
은 서비스에서 동작할 수 있는 행동으로, 행동은 사용자가 볼 수 있는 페이지 또는 동작하는 하나의 로직이 될 수 있음index.html.erb
<h1>
hello rails world!!
</h1>
config/routes.rb
Rails.application.routes.draw do
# 코드 시작
get "home/index" => "home#index"
# 코드 끝
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
get "home/index" => "home#index"
는 아래의 규칙을 기반으로 작성됨👄 "주어진 규칙을 통해 "home/index" 주소에 get 방식으로 요청하면 home 컨트롤러의 index action으로 연결하라"고 해석할 수 있음
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 controller의 index action으로 보내라"는 의미
a tag
로 연결하기$ rails g controller home index next
rails g controller
에 이어 controller 이름을 작성한 뒤 뒤이어 추가 이름 작성하면 그 이름들은 action 이름으로 지정됨
app/controllers/home_controller.rb
파일 생성
class HomeController < ApplicationController
# 자동 생성
def index
end
def next
end
end
Rails.application.routes.draw do
get 'home/index'
get 'home/next'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
a tag
로 연결하기app/views/home/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>
app/views/home/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>
route.rb
에서 자동으로 생성한 주소로 만듦config/routes.rb
파일 수정을 통해 root 설정 Rails.application.routes.draw do
root 'home#index'
get 'home/index'
get 'home/next'
end
$ rails g controller home form next
app/views/home/form.html.erb
<h3>
데이터 전송하기
</h3>
<form action="/home/next" method="GET">
<input type="text" name="data_1">
<button>
제출
</button>
</form>
config/routes.rb
에 있는 get 'home/next'
코드로 인해 form에서 작성한 데이터는 home controller의 next action으로 전달됨app/controllers/home_controller.rb
class HomeController < ApplicationController
def form
end
def next
@data = params[:data_1]
end
end
@data = params[:data_1]
를 통해 form에서 보낸 데이터 수신@data
형태의 인스턴스 변수로 생성app/views/home/next.html.erb
<h3>
받은 데이터
</h3>
<p>
<%= @data %>
</p>
<%= @data %>
<%= %>
erb 파일에서 사용할 수 있는 문법으로 화면 출력이 가능함@data
는 next action과 view를 연결함으로써 view에서 사용할 수 있음Reference