Ruby on Rails - restful
- RESTful ?
Representational State Transfer 이란 뜻인데 더 알기 쉽게 말하자면 '무엇을 어떻게 할지 표현' 입니다
여기서 무엇은 resource 이고 어떻게는 HTTP method 입니다
- Routes 작성하기
잉... 저희가 봐왔던 routes 코드와는 다르다는 것을 알 수 있습니다
resoureces :posts
이 한줄로 Get / Post / Put / Patch / Delete 의 method 를 rails 에서 자동으로 지정을 해주게 됩니다
이 때 저희는 URL 이 아닌 PATH 로 접근할 수 있습니다 !
$ rake routes
- View / Controller 작성하기
new 와 edit 는 입력한 값을 create / update 로 보내는 것과 value 값을 채워놓냐의 차이 빼고는 동일합니다
따라서 _form.html.erb 파일을 이용하여 중복된 내용을 작성한 뒤 <%= render 'form' %> 으로 렌딩을 합니다
그리고 여기서는 form_for 라는 ruby 문법을 사용합니다
_form.html.erb
1 2 3 4 5 | <%= form_for @post do |f| %> 제목 : <%=f.text_field :title%> <br> <br> 내용 : <%=f.text_area :contents, cols: 50, rows: 5%> <br> <br> <%=f.submit%> <% end %> | cs |
1 2 | <h1>새글 쓰기</h1> <%= render 'form' %> | cs |
edit.html.erb
1 2 | <h1>수정 하기</h1> <%= render 'form' %> | cs |
이제 컨트롤러를 하나하나 보겠습니다
posts_controller.rb
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 | class PostsController < ApplicationController before_action :set_post, only: [:show,:edit,:update,:destroy] def index @posts = Post.all end def show end def new @post = Post.new end def create @post = Post.new(post_params) if @post.save redirect_to @post, notice: "Success!" else render :new end end def edit end def update if @post.update(post_params) redirect_to @post, notice: "Success!" else render :edit end end def destroy @post.destroy! redirect_to root_path end private def set_post @post = Post.find(params[:id]) end # Strong Parameters def post_params params.require(:post).permit(:title, :contents) end end | cs |
일단 가장 먼저 :set_post 란 메소드가 있습니다
이건 @post = Post.find(params[:id]) 란 코드가 중복되니 따로 메소드로 관리를 하겠다는 뜻입니다
그 다음 post_params 메소드는 Strong Parameter 입니다
index.html.erb
1 2 3 4 5 6 7 8 9 10 11 12 | <h1>포스트페이지</h1> <%= link_to new_post_path do %> <button>새글쓰기</button> <% end %> <hr> <% @posts.each do |p| %> <p>제목 : <%=p.title%></p> <p>내용 : <%=p.contents%></p> <%= link_to "[글보기]", p %> <hr> <% end %> | cs |
show.html.erb
1 2 3 4 5 | <h1>글보기</h1> <p>제목 : <%= @post.title %></p> <p>내용 : <%= @post.contents %></p> <%= link_to "[수정]",edit_post_path %> <%= link_to "[삭제]",post_path, method: 'delete', data: {confirm: "정말로 삭제하시겠습니까?"} %> | cs |
이런식으로 프로젝트를 완성하면 restful 한 CRUD 게시판을 완성할 수 있습니다 !
'Dev > Ruby on Rails' 카테고리의 다른 글
[ROR] Devise 를 통해 회원관리 하기 ! (0) | 2018.02.15 |
---|---|
[ROR] Bootstrap Gem & tinymce 사용하기 ! (0) | 2018.02.15 |
[ROR] Scaffold 사용해보기 ! (0) | 2018.02.08 |
[ROR] CRUD 게시판 만들기 - Update Delete (0) | 2018.02.05 |
[ROR] CRUD 게시판 만들기 - Create Read (1) | 2018.02.04 |