document.onkeypress = getKey;

이번 시간에는 각각의 포스트들을 수정하고 삭제할 수 있는 기능을 넣어볼 것입니다.


저번 시간에 post 라는 모델을 만들었습니다. 이 post를 만들어놓았는데 string형태로 각각 title과 content를 담는 테이블 모델을 작성하였습니다.

하지만 기본적으로 id라는 것이 항상 존재해서 인덱스형태로 붙게됩니다.

즉 우리가 create 했던 게시글들도 사실상 번호들이 매겨 있습니다.


이것을 routes에서 변수(?)선언하듯이 사용을 할 수 있는데 /:아무변수이름 으로 사용을 하면 숫자로 이해가 되어서

나중에 컨트롤러에 parmas[:post_id] 로 받아올 수 있습니다.


일단 routes.rb를 먼저 고쳐보도록 하겠습니다.

앞에서 말한 것처럼

delete/1, delete/2 이런식으로 게시글의 숫자를 주는 페이지로 보내서 삭제를 한다고 생각합시다. 그렇다면 home#delete 함수를 사용해서 할거고요.


params[:post_id]를 Post 모델중 find해주는 것입니다.

그다음에 one_post 에 저장을 해주고요. 이를 destroy 해주면 삭제가 됩니다.

우리는 /list 디렉토리로 다시 가주기 때문에 삭제 url 후 list가 다시 보여지게 됩니다.


수정도 동일하게 찾은 후에 one_post에 저장을 해줍니다.



업데이트 같은 경우

update_view.html.erb

아까 전에 post로 'real_update/:post_id' => "home#real" 


form 의 액션을 살펴보면 @one_post의 id를 뒤에 루비코드로 작성시켜줍니다.


저번 시간에 쿼리를 받는 과정만 했었지. DB에 저장하는 것을 하지 않았다.


저번 시간은 index.html.erb에서 form 태그를 통해서 /write로 보내고 그 페이지에서 받은 쿼리를 출력해주는 역할을 했었다.


일단 DB를 뜻하는 model을 만들어주어야 합니다. 이름은 post로 하죠.


이렇게 하면 app-models-post.rb 와  db-migrate-2017~~~_create_posts.rb가 생성됩니다.


db-migrate-2017~~~_create_posts.rb

저희는 게시판에서 t.string 데이터 자료형을 사용해서 "title"과 "content" 이름을 주어줍니다.

이렇게 변경을 해주시면 마치 SQL에서 테이블을 건든 것이랑 똑같기 때문에 테이블 형태가 변경했으므로 꼭 저장을 해주어야합니다.

다음과 같이 bash에 쳐주면 된다.


이제 저번시간에 만들어둔 write파일로 보내졌던 home_controller의 def write에 params[:title]과 params[:content] 쿼리를 Model에 넣어야한다.


우리는 post라는 이름의 모델명이 존재하므로 다음과 같이 작성한다.

항상 모델명의 첫글자를 대문자로 사용하기 때문에 Post 로 사용합니다!

Post.new를 하고 @을 뺀 변수명에 저장을 해주면 이 테이블을 사용할 수 있습니다.

new_post라는 이름을 사용할 것이고요 @title을 new_post.title 부분에 저장하구 @content를 new_post.content 부분에 저장하고

new_post.save를 해줍니다.


그리고 이제는 write에다가 포스트한 게시내용들을 보여줄것이 아니라 /list라는 공간에 넣어봅시다.

그래서 redirect_to '/list'를 해준 것입니다.


그렇다면 다시 페이지가 있으니까 views-home에 list.html.erb를 새로 만들구 home_controller.rb 에는 def list end 를 작성해줍니다.

다음과 같이 작성해줍니다.

그리고

app-views-home-list.html.erb 에는


@every_post.each do |p| 는 반복문으로 p를 하나의 각각의 post로 생각해 p.title을 뽑고, p.content를 뽑는다는 것입니다.

하지만 우리는 t.string title 이랑 content만 했는데 created_at 은 뭐냐구요?

몇가지가 사실 더 기본적으로 저장되어 있습니다. 해당 db가 만들어진 시간은 created_at 그리고 id라는 것도 있습니다.!!!!



routes.rb도 고쳐줍시다.


run 하면 됩니다!! 이제


home 컨트롤러에 index 함수를 사용하겠습니다. (저절로 view파일도 생성됩니다.)


getbootsratp 에서 따온 bootstrap CSS 폼 형태중 아무거나 따오고 그냥 수정하였습니다. (http://getbootstrap.com/css/)


app-views-home-index.html.erb


눈여겨봐야할 점 2가지

1. form 태그의 action 에다가 /write 를 작성해줍니다. /write 페이지로 보내준다는 거죠. (우린 아직 안 만들었습니다.)

2. 각 input 태그의 name은 각각 title 과 content 라는 이름을 주어집니다.


실행을 시켜주면


이제 home_controller에 def write 를 작성해주시고 뷰파일에 write.html.erb를 만들고 다음과 같이 작성합니다.

app-controllers-home_controller.rb

@title 은 지역변수와 같이 사용되어 아무렇게 작성해주면 됩니다.

params[:title] 에서 :title은 아까 작성했던 form태그의 name 입니다! 중요합니다!!! 여튼 params[:폼태그이름] 형태로 받아옵니다.


app-views-home-write.html.erb

form태그로 쿼리를 받은 루비 코드를 출력해주는 코드입니다. 저번 시간 로또 출력하듯이 그냥 저 변수이름을 <%= @루비 변수명 %> 형식으로 출력합니다


마지막으로 라우트 파일을 고쳐주면 됩니다..

config-routes.rb

정리를 하면

그러면 이제 run을 하게되면

게시판에 작성을 해주면 form태그의 action때문에 /write로 움직이게 되고

우리는 routes.rb에서 /write 에서는 home#write 라는 루비코드를 실행시킬 것이라고 약속했으며

home컨트롤러의 write루비코드는 받은 params[:title]과 params[:content]를 변수안에 넣어서 출력하는데 사용하기로 했습니다.




로또번호를 추첨하는 generator를 만들어 보자.

페이지는 하나만 키고 거기에서 저절로 생성되게 만들자.


home 컨트롤러를 만들고 그 안에 제어할 뷰에 index 페이지가 있는 것을 만든다.

명령어는 rails g controller home index



이 세가지만 사용할 것입니다.


home_controller.rb



@number_list = 1부터 45까지의 배열형태 저장

@random = @number_list에서 샘플 6개의 숫자 뽑아내고 정렬.


index.html.erb


이제 home 폴더 아래의 index.html.erb 파일에다가 이제 컨트롤러의 숫자들을 뽑아내면 됩니다.


한 줄만 작성하였습니다!! 뽑아주는 코드는 다음과 같습니다.


routes.rb


라우트는 홈의 인덱스를 둡시다.



결과

Run Project를 누르시면


멋쟁이사자처럼4기로 활동하면서 AWS 서버에 대해서 공부하게 되었습니다.

이두희 형님 너무 감사합니다!!!


AWS는 회원가입해주세요



이 사진에서 좌측 상단 Compute 부분에 EC2를 클릭합니다.




Running instances를 클릭해주세요! 저는 하나 올린게 있어서!! 1 Running Instances 라고 뜹니다



여기서 파란 Launch Instance를 눌러주세요



이 중 Amazon Linux AMI 를 선택해주세요



우리는 학생이므로 거지니까 t2.micro 타입을...ㅎㅎㅎ 사용합시다. 나름 많이 수용할 수 있다고 해요!!



넘어가서 런치를 또 누르면


공개키를 제공해줍니다!!ㅎㅎ

이 공개키파일을 이용해서 서버에 접속할 수 있습니다. 그러니 꼭 저장해두셔야 되용...!!!

여기서 Download Key Pair을 누른 후 파란 Launch Instances를 누르시면 됩니다.


그렇게 되면


이런 형태로 나오게 되는데... (그 밑 저의 Instance는 캡쳐하지 않았습니다 개인정보가 있어서!ㅠㅠ)


그러면 이제 서버가 런칭 되고 있습니다.


이제에~~~리눅스에 들어가볼까요 ^o~ 저는 우분투와 칼리리눅스를 좋아합니다



저기 공개키를 저장을 해놓구 공개키가 있는 위치를 이용해 서버를 열어봅시다


이렇게 ssh 접속을 하라고 하네요~



저에게 할당된 서버입니다!! 여기에서 이제 여러분의 git을 내려받으면 됩니다 !! ㅎㅎ



대부분 웹 개발을 할 때 개발환경이 편한 툴들이 필요합니다.


필자는 c9이라는 웹 안에서 사용되고 있는 도구를 사용합니다.


c9의 장점을 조금 어필하자면

여러 명에서 코딩을 하거나 협업을 할 때 바로바로 결과를 뿌려줄 수가 있어요

단점은 여러 명에서 협업하면서 생기는 충돌이 있습니다. 저장을 잘못하면 큰일날 수가 있습니다.

특히 git으로 push를 할 때 문제가 생기는 경우가 많아요..ㅠㅠ


게다가 ruby on rails를 제공해주고 필요한 젬들이 거의 built-in되어 있어 많이 편합니다.


일단 주소는 c9.io 이고요


들어가보시면 이런 식으로 되어있어요.


오른쪽 상단에 보면 고양이 모양이 있습니다. 그렇다! git 사용자들은 로그인을 바로 할 수 있습니다.


로그인을 하셔서 workspace로 들어가보시면



이런 식으로 되어있습니다. (제가 만든 작업들이 있어서... 스샷이 작습니다)

workspace를 눌러주시고


workspace 이름과 Description, git 클론이 있으시다면 넣어주시고

저희는 Ruby 템플릿을 선택하겠습니다.




이런식으로 뜨게 되죠...! 밑은 bash 콘솔창이 뜨게 됩니다.

좌측에는 디렉토리들을 클릭할 수 있습니다.


이렇게 되면 개발환경이 완료되었습니다.

참 쉽죠?



웹 개발은 조립이죠. 조립... - 프로그래머 이두희



기존의 고전적인 php와 jsp로 바닥부터 웹사이트를 짜는 방식에서 벗어나
요즘은(?) Ruby on Rails, nodejs, Django같은 프레임워크 이용해 웹사이트를 만들게 됩니다.
필자 또한 웹 해킹, 보안 공부 때문에 php 언어를 공부하다가
Ruby on Rails를 알게 되었고 이를 공부하면서 글을 올리려고 합니다.


+ Recent posts