Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 홈페이지 개발하기
- css3
- 웹 프로그래밍
- jquery
- 웹 프로그래밍 입문
- node.js
- Django
- 파이썬 웹 프레임워크
- 루비온레일즈
- nodejs api
- django 공부하기
- 웹 프론트엔드
- 레일즈
- 모듈화
- 장고 공부하기
- 예스인테리어
- nodejs
- 루비 온 레일즈
- 꿀팁
- 데스크탑애플리케이션
- 웹프로그래밍
- express-mysql-session
- 모닝버드
- rails review
- rails
- 프론트엔드
- 장고
- Ruby On Rails
- 루비
- Python
Archives
- Today
- Total
노래하듯 이야기하고, 춤추듯 정복하라.
[Ruby on Rails] Post모델에 댓글(comments) 기능 추가하기 본문
# Post 모델에 댓글 기능 추가하기
이번 포스팅에서는 게시판 글쓰기 기능에 사용자들이 댓글을 달 수 있는 Comments 모델을 추가해 보겠습니다.
# Comments 모델 생성
- 터미널
-> $rails g model comment body:text post:references
-> $rails db:migrate
# post 모델이 has_many 추가
# post.rb
has_many: comments
# user모델과 comment 모델 설정하기
- comment.rb
# comment.rb
belongs_to :user
- user.rb
# user.rb
has_many :comments
has_many :posts
- 터미널
-> $rails g migration add_user_id_to_comment user_id:integer:index
-> $rails db:migrate
# routes.rb에 코드 추가
# routes.rb
resources :posts do
resources :comments
end
# 컨트롤러 생성
- 터미널
-> $rails g controller Comments
# comment 컨트롤러에 create, destroy 액션 추가
# comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment].permit(:body))
@comment.user = current_user #이 comments의 user_id를 저장하여, 댓글을 단 사용자의 이메일을 노출할 수 있음!
@comment.save
redirect_to pin_path(@pin)
end
def destroy
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end
# views 파일 코드 추가
* _comment.html.erb 와 _form.html.erb 파일 생성
- views/comments/_comment.html.erb
# _comments.html.erb
<div class="">
<p class=""><strong><%= comment.user.email %></strong></p>
<p class=""><%= comment.body %></p>
<p class=""><%= time_ago_in_words(comment.created_at) %> Ago</p>
<p>
<%= link_to 'Delete', [comment.post, comment],
method: :delete,
class: "btn btn-primary",
data: { confirm: 'Are you sure?' }
%>
</p>
<hr>
<div>
- views/comments/_form.html.erb
# _form.html.erb
<%= form_for([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :body %>
<%= f.text_field :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
- views/posts/show.html/erb
# show.html.erb
<div class="">
<h2><%= @post.comments.count %> Comments</h2>
<%= render @post.comments %>
<h3>Add a Comment: </h3>
<%= render "comments/form" %>
</div>
'프로그래밍 > Ruby & Rails' 카테고리의 다른 글
[Ruby & Rails] Post모델에 별점(Review) 기능 추가하기2 (0) | 2018.08.10 |
---|---|
[Ruby on Rails] Post모델에 별점(Review) 기능 추가하기 (0) | 2018.08.10 |
[Ruby on Rails] 좋아용 기능 구현하기: acts_as_votable (2) | 2018.08.09 |
[Ruby & Rails] 사진 업로드 _paperclip (0) | 2018.08.09 |
[Ruby & Rails] Rails의 devise gem 사용하기 (0) | 2018.07.05 |
Comments