일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 日本語
- 일본어
- Python
- メソッド
- java
- ruby
- rails
- 건담베이스
- 건담
- 반다이몰
- springboot
- 一日一つメソッド
- 디지몬
- 연습문제
- rails7
- vscode
- DART
- html
- CSS
- Web
- 비즈니스일본어
- 単語
- jsp
- C로 시작하는 컴퓨터 프로그래밍4판
- nico
- 자바
- 인프런
- javascript
- Spring
- Flutter
- Today
- Total
AR삽질러
Rails 페이지간 정보전달 - (2) 본문
RubyOnRails 페이지 간 정보 전달하기
간단한 계산기 프로그램을 통해 GET/POST요청을 사용하여 두 페이지간에 정보를 전달하는 방법
0. 새로운 Controller생성
terminal : rails g controller calculator main
- controller에 calculator를 생성하고 view에 main을 생성한다.
1. app/controllers/calculator.rb
class CalculatorController < ApplicationController
def main
end
def result
@fristNum = params[:num1]
@secoundNum = params[:num2]
@resultNum = @fristNum + @secoundNum
end
end
간단한 계산기의 컨트롤러에는 main, result두개의 액션(메소드)가 존재한다.
main : 메인 페이지를 제어한다.
result : 두개의 숫자를 받아 합산한다.(아직 문자열로 합산되기 때문에 아래의 결과화면처럼 숫자를 더해도 문자열처럼 더해진다.)
2. config/routes.rb
Rails.application.routes.draw do
get 'calculator/main'
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
root :to => "calculator#main"
get "/result" => "calculator#result"
end
메인페이지와 결과 페이지에 대한 라우트설정
root :to => "calculator#main" : rootURL이 calculator#main 액션(메소드)로 매핑된다.
get "/result" => "calculator#result" : '/result' URL이 calculator#result 액션(메소드)로 매핑되도록 설정한다.
3. views/calculator/main.erb, result.erb
<form action="/result" method="get">
<input type="number" name="num1">
+
<input type="number" name="num2">
<button type="submit">제출하기</button>
</form>
사용자가에 두수를 입력받아 GET요청을 통해 /result 페이지로 데이터가 전송된다.
<h1>결과 페이지</h1><br>
<p><%=@fristNum%> + <%=@secoundNum%> = <%=@resultNum%></p>
메인폼과 결과페이지구성
1. app/controllers/calculator.rb 개선
class CalculatorController < ApplicationController
def main
end
def result
@fristNum = params[:num1].to_i
@secoundNum = params[:num2].to_i
@resultNum = @fristNum + @secoundNum
end
end
이전 코드에서 @firstNum 과 @secoundNum 이 문자열로 처리되어 5 + 5를 하면 55가 출력되고 있다.
문자열이 아닌 문자열을 정수로 변환하기 위해서 .to_i 를 사용한다.
POST로 정보전달
0. route.rb
Rails.application.routes.draw do
get 'calculator/main'
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
root :to => "calculator#main"
get "/result" => "calculator#result"
post "/result" => "calculator#result"
end
기존 GET메서드는 유지하면서 POST 메서드로 처리할 메소드를 추가한다.
post "/result" => "calculator#result" 액션(메서드)로 라우팅한다.
1. views/calculator/main.erb, result.erb
<form action="/result" method="post">
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
<input type="number" name="num1">
+
<input type="number" name="num2">
<button type="submit">제출하기</button>
</form>
method="post" 로 변경하여 전송하도록 설정하고 추가적으로 보안인증토큰을 추가하여 Rails에서 CSRF공격을 방지한다.
'Ruby > RubyOnRails-한국어' 카테고리의 다른 글
Ruby변수전달 - (1) (0) | 2023.09.11 |
---|---|
Hello Rails - (0) (0) | 2023.09.11 |
Framework? (0) | 2023.09.11 |
RubyOnRails 환경설정 - (1) (0) | 2023.08.29 |
Ruby On Rails란? - (0) (2) | 2023.08.29 |