Skip to content

Commit 8bb3f99

Browse files
committed
实现点赞功能
1 parent bfdf26e commit 8bb3f99

18 files changed

+95
-44
lines changed

app/assets/stylesheets/application.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
color: green;
1616
}
1717

18+
.like_color {
19+
color: red;
20+
}
21+
1822
.badge_color {
1923
color: white;
2024
background-color: #269abc;

app/controllers/articles_controller.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,25 @@ def favorite
8787
Rails::logger.info("----------#{params}---------------")
8888
@article = Article.find(params[:id])
8989
@article.favorites.create(user_id: current_user.id)
90-
respond_to do |format|
91-
format.js
92-
end
93-
# render :favorite
90+
render :favorite
9491
end
9592

9693
def unfavorite
9794
@article = Article.find(params[:id])
9895
favorite = Favorite.where(user_id: current_user.id, article_id: @article.id).first
9996
favorite.destroy
10097
render :favorite
101-
# redirect_to :back
102-
# respond_to do |format|
103-
# format.html { render 'favorite'}
104-
# format.js
105-
# end
106-
# render partial: 'favorite'
10798
end
10899

100+
def like
101+
@article = Article.find(params[:id])
102+
@article.incr(like: 1)
103+
end
109104

105+
def unlike
106+
@article = Article.find(params[:id])
107+
@article.incr(like: -1)
108+
end
110109

111110
private
112111
# Use callbacks to share common setup or constraints between actions.

app/controllers/comments_controller.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ class CommentsController < ApplicationController
66
# end
77

88
def edit
9-
@comment
109
end
1110

1211
def create
1312
@article = Article.find(params[:article_id])
1413
@comment = @article.comments.create!(comment_params.merge(name: current_user.user_name))
15-
# redirect_to user_article_path(@article.user, @article), :notice => "Comment created!"
1614
render :show
1715
end
1816

@@ -27,7 +25,7 @@ def update
2725
def destroy
2826
@comment.destroy
2927
respond_to do |format|
30-
format.html { redirect_to user_article_path(@article.user, @article), notice: 'User was successfully destroyed.' }
28+
format.html { redirect_to user_article_path(@article.user, @article), notice: 'comment was successfully destroyed.' }
3129
format.json { head :no_content }
3230
end
3331
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class FavoritesController < ApplicationController
2+
3+
def create
4+
Rails::logger.info("----------#{params}---------------")
5+
@article = Article.find(params[:article_id])
6+
current_user.favorites.create(article_id: params[:article_id])
7+
render :favorite
8+
end
9+
10+
def destroy
11+
Rails::logger.info("----------#{params}---------------")
12+
favorite = Favorite.find(params[:id])
13+
Rails::logger.info("----------#{favorite}---------------")
14+
@article = favorite.article
15+
favorite.destroy
16+
render :favorite
17+
end
18+
19+
end

app/controllers/likes_controller.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class LikesController < ApplicationController
2+
3+
def create
4+
Rails::logger.info("-------#{params}------------")
5+
@article = Article.find(params[:article_id])
6+
current_user.likes.create(article_id: @article.id)
7+
render :like
8+
end
9+
10+
def destroy
11+
Rails::logger.info("-------#{params}------------")
12+
like = Like.find(params[:id])
13+
@article = like.article
14+
like.destroy
15+
render :like
16+
end
17+
18+
end

app/models/article.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ class Article
33
field :title, type: String
44
field :content, type: String
55
field :category, type: String, default: 'diary'
6+
field :like, type: Integer, default: 0
67

78
validates :title, presence: true
89

910
embeds_many :comments
1011
belongs_to :user
1112
has_many :favorites
13+
has_many :likes
1214

1315
paginates_per 10
1416

app/models/like.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class Like
2+
include Mongoid::Document
3+
belongs_to :user
4+
belongs_to :article
5+
end

app/models/user.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class User
1717

1818
has_many :articles, dependent: :destroy
1919
has_many :favorites
20+
has_many :likes
2021

2122
has_secure_password
2223
end

app/views/articles/_favorite_link.html.erb

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/views/articles/show.html.erb

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@
1414
<div class="panel-footer" >
1515
<div class="row">
1616

17-
<div id="favorite" class="col-md-6 text-left">
18-
<%= render 'favorite_link' %>
17+
<div id="favorite" class="col-md-4 text-left">
18+
<%= render 'favorites/favorite_link' %>
1919
</div>
2020

21-
<div class="col-md-6 text-right">
21+
<div id="like" class="col-md-4 text-center">
22+
<%= render 'likes/like_link' %>
23+
</div>
24+
25+
<div class="col-md-4 text-right">
2226
<%= render 'edit_delete' %>
2327
</div>
2428

@@ -28,12 +32,6 @@
2832
</div>
2933

3034
<div id="comment">
31-
<% if @article.comments.size > 0 %>
32-
<%= render 'comments/show', object: @article %>
33-
<% end %>
35+
<%= render 'comments/show' %>
3436
</div>
3537

36-
<%= render 'comments/form' %>
37-
38-
39-

0 commit comments

Comments
 (0)