AR삽질러

Rails조건문 - (2) 본문

카테고리 없음

Rails조건문 - (2)

아랑팡팡 2023. 9. 12. 00:55
728x90

 

Ruby와 Rails에서 조건문활용

 

Ruby와 Rails에서 조건문은 코드의 흐름을 제어하는 도구로 적절하게 활용하여 코드의 가독성과 유지보수성을 유지할 수 있다.

 

Ruby 조건문

 1) if - else

condition = (10 % 2) == 0
if condition
    print("true")
else
    print("false")
end

# true

if-else문제 : 사용자가 입력한 숫자가 짝수인지 홀수인지 판별하는 프로그램

puts "숫자를 입력하세요: "
number = gets.to_i

if number % 2 == 0
  puts "#{number}는 짝수입니다."
else
  puts "#{number}는 홀수입니다."
end

 

 2) elseif

puts "숫자를 입력하세요: "
number = gets.to_i

if number % 2 == 0
  puts "입력하신 숫자 : #{number}는 짝수입니다."
elsif number % 2 == 1
  puts "입력하신 숫자  : #{number}는 홀수입니다."
else
  puts "숫자가 아닙니다."
end

elseif문제 : 나이를 입력받아 성인여부 판별하기

puts "나이를 입력해주세요 : "
age = gets.to_i

if age < 0
  puts "잘못된 나이입니다."
elsif age < 18
  puts "미성년자입니다. 열공하세요!"
elsif age <= 18 && age < 65
  puts "성인입니다. 열공 열일 하세요!"
elsif age >= 65
  puts "당신은 시니어입니다."
else
  puts "당신은 별이군요"
end

 

 3) case

puts "월을 입력하세요 : "
month = gets.to_i

case month
    when 3..5
        puts "봄입니다."
    when 6..8
        puts "여름입니다."
    when 9..11
        puts "가을입니다."
    when 12, 1..2
        puts "겨울 입니다."
    else
        puts "숫자만 입력해주세요"
end

case문제 : 사용자의 이름을 입력받고 입력받은 사용자의 국어, 수학, 과학 점수를 입력받아 평균을 구한뒤 학점을 구하는 프로그램

# encoding : UTF-8

print "사용자의 이름을 입력해주세요 : "
name = gets.chomp

def score(subject)
    while true
        print"#{subject}점수 입력 : "
        score = gets.to_i
        if score >= 0 && score <= 100
            return score
        else
            puts "0에서 100사이의 점수를 입력해주세요.."
        end
    end
end

kor = score("#{name}님의 국어")
math = score("#{name}님의 수학")
scien = score("#{name}님의 과학")

sum = kor + math + scien
avg =  sum / 3.0

grade = case avg
    when 90..100
        "A+"
    when 80..90
        "A"
    when 70..80
        "B"
    when 60..70
        "C"
    else
        "F"
    end
puts "#{name}님의 총점은 #{sum}이고 학점은 #{grade}입니다."


 

Rails 조건문

사용자에게 아이디를 입력받아 "admin"일 경우 관리자에게 인사, "admin"이 아닐경우 회원님에게 인사하는 조건문

 

config/routes.rb

Rails.application.routes.draw do
  get "login" => "user#loginForm"
  post "/login" => "user#login"
  get "/admin" => "user#adminSuccess"
  get "/user" => "user#userSuccess"
end

 

UserController

class UserController < ApplicationController
  def login
      username = params[:username]
      session[:username] = username

      if username == 'admin'
        redirect_to admin_path
      else
        redirect_to user_path
      end
    end

    def adminSuccess
      @username = session[:username]
    end

    def userSuccess
      @username = session[:username]
    end
end

 

views/loginForm.html.erb

<br><br><br>
<form action="/login" method="post">
  <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
  <input type="text" name="username" placeholder="아이디">
  <button type="submit">로그인</button>
</form>

 

views/adminSuccess.erb

<p><%= @username %> : 관리자님 Hi!</p>

 

views/userSuccess.erb

<p><%= @username %> : 회원님 안녕하세요!</p>

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST