RubyOnRails 1) CRUD 기본
루비온 레일즈 웹 프레임워크의 기본인 CRUD에 대해서 살펴보고자 한다.
먼저 레일즈 프로젝트를 만들어준다.
1 | $ rails new project |
그리고 Post 모델을 만들어준다.
해당 Post 모델은 string 형의 title 이라는 field와 string 형의 content field를 지니고 있다.
1 | $ rails g model Post title:string content:string | cs |
그리고 해당 모델의 동작을 담당할 controller를 만들어준다(여기서는 view 파일이 필요한 액션만 미리 정의해주는 게 편리)
1 | $ rails g controller Posts new index show edit | cs |
다음, 암호화의 토큰을 꺼주기 위해 다음의 코드를 주석처리해준다.
1 2 3 4 5 | \app\controllers\application_controller.rb class ApplicationController < ActionController::Base # protect_from_forgery with: :exception end | cs |
그리고 여기서 Bootstrap을 통해 view (html) 를 편하게 사용하려고 한다.
그렇기 때문에 다음의 코드를 입력한다.
1 2 3 4 5 6 | \app\views\layouts\application.html.erb <!-- Bootstrap --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> | cs |
그리고 Route.rb 파일에서 다음의 주소 라우팅을 정리해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | \config\routes.rb root 'posts#index' # Post --------------------------------- get 'posts/new' post'posts/create' get 'posts/index' get 'posts/show/:id' => 'posts#show' get 'posts/edit/:id' => 'posts#edit' post'posts/update/:id' => 'posts#update' get 'posts/destroy/:id' => 'posts#destroy' # Post --------------------------------- | cs |
다음, controller의 액션들을 정의해준다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | \app\controllers\posts_controller.rb class PostsController < ApplicationController # C 만들기------------------------------------------------ def new end def create @post = Post.new @post.title = params[:title] @post.content = params[:content] @post.save redirect_to "/posts/index" end # R 보기------------------------------------------------ def show @post = Post.find(params[:id]) # 해당 Post 객체 찾기 end def index @posts = Post.all.reverse end # U 수정하기------------------------------------------------ def edit @post = Post.find(params[:id]) # 해당 Post 객체 찾기 end def update @post = Post.find(params[:id]) # 해당 Post 객체 찾기 @post.title = params[:title] @post.content = params[:content] @post.save redirect_to "/posts/show/#{@post.id}" end # D 삭제하기------------------------------------------------ def destroy @post = Post.find(params[:id]) # 해당 Post 객체 찾기 @post.destroy redirect_to "/posts/index" end end | cs |
그리고 각 view 파일들을 정리해준다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | \app\views\posts\new.html.erb <%= render "navbar" %> <div class="container"> <h1>새 글 작성_게시판 </h1> <form action="/posts/create" method="post" enctype="multipart/form-data"> title:<br> <input type="text" name="title" placeholder="제목을 입력하세요" style="width:80%"><br> content:<br> <textarea name="content" placeholder="내용을 입력하세요" style="width:80%" rows="10"></textarea><br> <button type="submit" class="btn btn-primary">작성</button> </form> </div> \app\views\posts\index.html.erb <%= render "navbar" %> <div class="container"> <table class="table"> <thead class="thead-dark"> <tr> <th scope="col">#</th> <th scope="col">Title</th> <th scope="col">User</th> </tr> </thead> <tbody> <% @num = 1%> <% @posts.each do |p| %> <tr> <th scope="row"><%=@num%></th> <td><a href="/posts/show/<%=p.id%>"><%=p.title%></a></td> <td>user</td> </tr> <% @num += 1 %> <% end %> </tbody> </table> <a href="/posts/new"><button class="btn btn-secondary">글쓰기</button> </a> </div> \app\views\posts\show.html.erb <%= render "navbar" %> <div class="container"> <div class="alert alert-dark" role="alert"> <h2><%=@post.title%></h2> <hr> <%=@post.content%> </div> <a href="/posts/index">목록</a> <a href="/posts/edit/<%= @post.id %>">수정</a> <a href="/posts/destroy/<%= @post.id %>">삭제</a> </div> \app\views\posts\edit.html.erb <%= render "navbar" %> <div class="container"> <h1> 수정하기 </h1> <form action="/posts/update/<%=@post.id%>" method="post" enctype="multipart/form-data"> title:<br> <input type="text" name="title" value= "<%= @post.title %>" style="width:80%"><br> content:<br> <textarea name="content" style="width:80%" rows="10"><%= @post.content%></textarea><br> <button type="submit" class="btn btn-primary">작성</button> </form> </div> | cs |
'Archived(Programming) > Ruby on Rails(기초)' 카테고리의 다른 글
RubyOnRails 5) Like 좋아요 기능 (0) | 2018.12.28 |
---|---|
RubyOnRails 4) Search 검색하기 (0) | 2018.12.27 |
RubyOnRails 3) Devise 기본 (0) | 2018.12.26 |
RubyOnRails 2) Model 관계 설정 (0) | 2018.12.26 |
RubyOnRails Excel file 파싱하기(xlsx 파일) (0) | 2018.11.17 |