Model, View, Controller

김수민·2023년 8월 2일

Ruby on Rails 1.2.6

목록 보기
3/8
post-thumbnail

models 폴더 및 db/migrate 폴더 내에 Migration 구축이 마무리 되었다고 가정한다.

1.생성

DB와 연결

  • 터미널에서, ruby script/server를 입력하여 서버 실행
  • http://localhost:3000/ 에 접속하여 연결 확인

controller 생성

ruby script/generate controller 파일명
rails g controller 파일명

터미널에 위와 같이 입력하면

  • controllers / 파일명_controller.rb
  • views / 파일명

이 생성된다. views/파일명 내의 rhtml 파일은 직접 작성해야한다.
models는 사전에 작성해놓은 것이다.

2. html 기본 틀 작성

views/layouts/application.rhtml

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
      <%= yield %>
</body>
</html>

3. Routes

map.connect

주소가 A일 때 B controller의 C action을 실행할 것을 명시한다.

config/routes.rb

map.connect "주소A", :controller => "[views내]의 파일명B", :action => "[views/파일명] 내의 실행시킬 rhtml의 파일명C"

map.connect "주소A",
:controller => "[views내]의 파일명B",
:action => "[views/파일명] 내의 실행시킬 rhtml의 파일명C"
map.connect "", :controller => "login", :action => "index"
# Install the default route as the lowest priority.
map.connect ':controller/:action/:id.:format'
map.connect ':controller/:action/:id'

❗ 주소 또한 함수로 넣을 수 있다.

onclick = "location.href=''"

해당 객체를 클릭했을 때, location.href를 변경시킨다.

controllers/login_controller.rb

현재 지정된 controller의 action 함수가 위와 같이 작성되어있다고 가정할 때,

views/login/index.rhtml

  <button onclick="location.href='<%= url_for :action => :해당 controller의 함수명 %>'"> </button>
  <button onclick="location.href='<%= url_for :action => :[views/파일명] 내의 실행시킬 rhtml의 파일명C %>'"> </button>
  <button onclick="location.href='<%= url_for :action => :auth_login %>'">로그인</button>

이벤트가 발생했을때, 다른 함수를 돌린 후 결과에 따라 다른 방향으로 이동 시킬 때에는 주로
해당 controller의 action 함수명(ex: :auth_login)을 작성한다.

이벤트가 발생했을때, 항상 같은 곳으로 이동시킨다면
[views/파일명] 내의 실행시킬 rhtml의 파일명C(ex: "index")를 작성한다.

❗ onclick 이벤트가 달린 객체가 button이고, 그 type이 submit일 때는 submit을 우선하여 작동하기 때문에 action이 되지 않는다.

redirect_to

controller, action등을 재연결한다

controllers/login_controller.rb

    redirect_to :controller => :타 controller 명, :action => :해당 controller의 action 함수명
    redirect_to :controller => :article, :action => :list

❗ controller를 명시하지 않으면 현재의 controller로 유지된다.

render

화면을 작성한다.

controllers/login_controller.rb

	render :controller => :타 controller 명, :action => :해당 controller의 action 함수명
    render :controller => :article, :action => :list
profile
sumin0gig

0개의 댓글