본문 바로가기

RUBYONRAILS

[rails] mySql 연동 후 게시글 조회

음.. 오랜만에 쓰네요.. 고향도 다녀오고

집에도 다녀온다고 한동안 못썻음 그래서 짬짬히 내서 아무것도 모르는 상태에서 알아보면서 한다고 Mysql 연동까지하고서는 안했었쬬. ㅋㅋ

그래서 오늘은

Rails에서 게시판 자동으로 만들어주는 명령어로도 해볼려고 했으나 도처히 이해가 안가서 패스 ㅋㅋ

그 명령어가 아마 scaffold가 들어가있었던 명령어 같네요.

 

그래서 구글링해서 어느분 포스팅을 즐겨찾기 해놓고 따라했더니 잘되네요.

감사합니다. 맨 아래에 적어놓을게요 ㅋ

Mysql 연동까지해서 rake db:migrate까지했던가 ? 하여튼 성공했었어요 ㅋㅋ 그럼

정말 되는지 목록을 가져와 볼게요. 100퍼센트 이해하고 적는건 아니라는거 이해해주십셔 ㅋ ㅋ

그냥 하는거임 모르면 또 볼라고 공부는 계속된다.

 

일단 시작전에 model을 생성하고 넘어갈게요.

rails g model getProductBoearList pro_name:string, pro_cnt:string, pro_cate:string, pro_udt:timestamp, pro_mdf:timestamp, pro_expln:string

 

이 명령어를 통해서 model을 생성합니다.

명령이 끝나고

 

rake db:migrate

 

를 실행해서 DB를 생성해야합니다.

이렇게 생성됐구요.

 

1. routes.rb 설정

routes.rb에 보면 url mapping 이라고 해야되나 비슷하죠 ? 기존 spring annotation 방식으로 개발을 하다보니 이렇게 이해하게 되더라구요.

 

root :to => 'main#main'

 

이렇게 적으시구요.

root는 즉 http://localhost:3000/ <-- 이놈을 얘기하는 거겠지요.

그러면 main#main Action을 실행하게 될거에요

main <-은 컨트롤러 # 뒤에 main <- 은 mainController의 Action을 얘기합니다.

 

이렇게 설정해두었으니까 url mapping은 끝났고 그럼..

 

2. paging 설정

게시판이니까 페이징 설정할려면 필요하겠죠. 근데 어디든 다 쓰는거니까 ..

책을 사서 보느넋도 아니고 해서 멋대로 이해하고 있습니다. 이 글 보시는 분은 그러시지 마시길 ㅋㅋ

 

ApplicationController를 보시면 < ActionController를 이렇게 하고 있죠. 뭐 상속이나 구현이라고 이해하면 될려나.. 하여튼

 

def rowsPerPage

@rowsPerPage ||=2

end

 

메서드를 선언해줍니다.

'||'의 의미는 잘 모르겠어요.

 

2. application_helper 설정

#title 표시
def full_title(page_title)
base_title = "productBoard"
if page_title.empty?
base_title
else
"#{base_title}|#{pate_title}"
end
end

#Paging helper
def getTotalPageList(total_cnt, rowsPerPage)
if((total_cnt % rowsPerPage) == 0)
total_pages = total_cnt / rowsPerPage;
else
total_pages = (total_cnt / rowsPerPage) + 1;
end

totalPageList = (1..total_pages).to_a
end

 

이 내용 넣으시고 공부해보시면 아실거니까 문법만 다르지 다 거기서 거기 아니겠어요.

 

3. mainController 구현

mainController에 보시면 상단에 class MainController < ApplicationController라고 되어 있어요.

제 생각입니다만 ApplicationController에서 ActionController를 상속받았기 때문에 MainController에서도 ApplicationController만 상속받아도 ActionController로 사용할 수 있지 않겠나라는 생각해봅니다.

 

구현할게요.

아까전에 helper에다가 구현해놓은걸 사용하기 위해서 include 해주시고

include ApplicationHelper

 

def main
@proList = ProductList.find(:all, :limit => rowsPerPage, :order=>'created_at desc')

//아까 데이터베이스 생성할때 ProductList라고 명명했었죠.

//내용을 보면 find 명령을 통해서 조건절을 주는 것 같습니다.
@totalCnt = ProductList.all.count

//all.count 명령을 통해서 모든 record의 count를 가져옵니다.
@current_page = 1

//초기 페이징 셋팅
@totalPageList = getTotalPageList(@totalCnt, rowsPerPage)

//helper에 작성된 gettotalPage 메서드를 활용해서 페이징 태웁니다.
end
end

 

이렇게 MainController의 구현은 끝났습니다.

변수는 @proList와 같이 생성하고 View에서도 사용할 수 있습니다.

 

Rails에서 제공하는 흔히 말하는 urlMapping은 여러가지가 있는 것 같더라구요.

실제로 url main/1 amin/2와 같이 뒤에 숫자를 통해서 Action을 결정지을 수도 있구요,.

 

하지만 하는 방식이 있어서 지금것이 가장 이해하고 사용하는데 편했습니다.

 

 

4. View

<% if @proList.count > 0 %>
<ul>
<% @proList.each do |proRow| %>
<tr>
<td width="100"><p align="center"><%= proRow.proId %></p></td>
<td width="200"><p align="center"><%= proRow.proName %></p></td>
<td width="300"><p align="center"><%= proRow.proExpl %></p></td>
<td width="100"><p align="center"><%= proRow.proCnt %></p></td>
<td width="100"><p align="center"><%= proRow.proWorker %></p></td>
</tr>
<% end %>
</ul>
<% end %>

 

controller에서 사용했던 @proList를 그대로 사용해서 데이터를 받고 실행할 인자는 proRow가 됩니다.

@proList를 리스트로 보고 each를 통해 반복해서 proRow를 통해서 데이터를 끄집어 오는 거죠.

조금 해보신 분들은 딱 봐도 저런거구나 하고 이해하실겁니다.

여기까지해서 나온 화면이 아래와 같아요.

 

 

 

 

이런식이라면 CRUD는 어렵지 않을 것같아요.

제가 하는게 단순한 쇼핑몰같은거나 하나 만들어볼까하고 하는거라서요.

Rails도 공부할 겸.. ㅋㅋ

 

제가 참고했던

포스팅은 여기에요. 자세히 나와있으나 가보세요^

http://jeremyko.blogspot.kr/2012/08/ruby-on-rails-1.html

CRUD만 구현해놓고 세션을 또 알아봐야겠네요 ㅠ

 

'RUBYONRAILS' 카테고리의 다른 글

Spring 4.0 + Mybatis java config로 설정하기  (1) 2015.02.05
[rails] ruby on rails 설치기  (0) 2013.10.08
[rails] 프로젝트 띄우기  (0) 2013.10.08
[rails] Rails + MySql 연동  (0) 2013.10.08