티스토리 뷰

해당 글은 https://blog.naver.com/kbs4674/220982828849 로 부터 게시글이 이전되었습니다.

 

직접 실습을 통해 배워보는 그 첫번 째 시작으로, M(DB)을 제외한 VC 만으로 랜덤 로또번호를 알려주는 페이지를 제작해보겠습니다!

 

 

  • 간단한 설명과 함께 둘러보는 Ruby

1. 우선 VC(View와 Controller)를 생성을 해보는 과정을 거쳐보겠습니다.

터미널에 아래 명령어를 한번 입력해보세요!

rails generate controller lottie index

 참고  Controller을 Generate 할 때 암묵적인 규칙 : Controller 이름은 '복수명' 으로 지어주세요.

(lotto의 복수명은 lotties), 나중에 model 파일도 생성을 해야 할 때 Controller와 이름이 겹치지 않게 하기 위해서 입니다.

 

1) View 및 Controller (그 외) 생성

위 명령어를 입력을 하면 Controller와 View가 생성이 되는걸 보실 수 있습니다.

(사실 그 외에도 scss, javascript 등 구성도 생성이 되긴 합니다.)

 

2) config/routes.rb

 routes.rb  는 홈페이지의 URL(URI)경로 규칙을 설정하는 파일입니다.

아무리 VC 파일이 있어도  routes.rb  에서 규칙 정의를 내리지 않으면 페이지는 접속이 되지 않습니다.

 

참고로 위 명령어를 입력하면 자동적으로 routes.rb에 URL(URI) 정의가 다음과같이 되어있는게 확인됩니다.

* 2번 째 줄 get 부분

Rails.application.routes.draw do
  get 'lottie/index'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

 

3) Controller

 app/views/controllers/lotties_controller.rb  파일을 열람하면 아래와 같은 코드를 확인하실 수 있습니다.

class LottieController < ApplicationController
  def index
  end
end

 def index  는 Lottie 컨트롤러에 종속된 액션의 한 종류입니다.

그리고 Controller의 액션은 각 이름에 맞는 view에 코드가 반영이 됩니다.

그리고 view 파일에서는 Controller 액션에 정의된 변수 사용을 할 수가 있습니다.

(Controller 액션 내 변수 정의 예시는 바로 아래  주의  를 참고해주세요!)

 

 주의  여기서 햇갈릴 수 있는 개념이 있는게, 액션 내에 정의된 변수는 다른 액션에는 영향을 끼치지 않습니다.

class LottieController < ApplicationController
  def index
  	@lotto = Lotto.all
  end
  
  def show
  	@lottoShow = Lotto.find(params[:id])
  end
end

예를들면 위와같이 index, show 액션이 있다 했을 때 show 액션에서는 index 액션의 @lotto 변수를 사용할 수가 없습니다.

 

2. 이제 처음에 홈페이지(루트페이지)에 접속하면 보여질 페이지에 대한 변경을 해야합니다.

 config/routes.rb  에서 다음과 같이 코드를 수정해주세요.

Rails.application.routes.draw do
	root 'lotties#index'	
	get 'lottie/index'
end

root 같은 경우는 처음 루트페이지에 접속 시, 어느 페이지가 보여질지 설정하는 것으로서 root는 다른 규칙과는 다르게 # 으로 구분을 합니다.

여기서 lottiescontroller 이름이고, indexController에 종속된 액션 이름이라고 보시면 됩니다.

 

라우터를 변경하고 루트페이지를 접속하면

과거와는 다르게 바로 lottie에 종속된 index 페이지로 이동이 됩니다.

 

3. 1~45 정수를 랜덤으로 보여주는 로또 페이지를 간단히 만들어보겠습니다.

1) Controller 파일을 열람해서 다음과 같이 수정을 합니다.

## app/controllers/lottie_controller.rb
class LottieController < ApplicationController
	def index
		@random = (1..45).to_a # 1~45의 숫자가 담긴 배열을 생성합니다 (C언어로 치면 for (int i=1;i<=45;i++) 개념), 참고로 .to_a는 일반 정수를 array 화 시키는 메소드
		@lotto = @random.sample(7).sort # random 변수 내 있는 1~45 숫자 중 .sample(n)를 통해 n개의 랜덤정수를 뽑아냅니다. 그리고 .sort를 통해 오름차순 정렬을 합니다.
	end
end

 

2) view 파일을 다음과 같이 수정해주세요.

## app/views/lottie/index.html.erb

<h1 align="center">오늘 내 인생에 있어 최고의 로또번호는??</h1>
<center><%= @lotto %></center>

 참고 

@lotto 변수는 Controller 내 index 액션@lotto 변수를 참고한 겁니다.

 view에서는 일반적으로는 마크업 언어로서 표현을 합니다.

그런데 중간에 Ruby/Rails 표현을 써야 할 경우,  <%= %>  으로 감싸줌으로서 표현을 해줄 수 있습니다.

 

3) 결과를 확인해볼까요!

F5를 누를 때 마다 번호가 계속 바뀌는게 확인이 됩니다 :D

 

루비온 레일즈 Ruby on Rails ROR

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함