主页

在个人博客中增加评论功能

2023-08-19 11:15AM

1. 先创建comments表

bundle exec rails generate migration create_comments

然后增加下面的代码:因为文章和评论是多对多的关系,所以我在comments表中直接增加了外键article_id

class CreateComments < ActiveRecord::Migration
    def change
        create_table :comments do |t|
            t.string :author_name
            t.text :content
            t.integer :article_id
           t.timestamps
       end
   end

end

2. 再创建controller

# app/controllers/comments_controller.rb

class CommentsController < ApplicationController

 def create
      comment = Comment.new
      comment.article_id = params[:article_id]
      comment.author_name = params[:author_name]
      comment.content = params[:content]
      comment.comment_user_id = session[:current_comment_user]['id']
      comment.save!
         
      #redirect_to :back
      redirect_to "/articles/#{params[:article_id]}"
    end   
       
  end

3. 然后创建model

# app/models/comment.rb

class Comment < ActiveRecord::Base
    belongs_to :article
  end

4. 在app/models/article.rb 中增加下面的代码:

 class Article < ActiveRecord::Base

    has_many :comments

end

5. 在app/views/articles/show.html.erb 中增加下面的代码:

 <div style='margin-top: 30px;'>
    <p>新增评论: </p>
    <%= form_tag "/comments", method: 'post' do %>
      <p>姓名:
      <%= text_field_tag "author_name" %>
      </p>
      <p>正文:
      <%= text_field_tag "content" %>
      </p>
      <input type='hidden' name='article_id' value='<%= params[:id] %>' />
      <%= submit_tag "提交" %>
    <% end %>

    <p>评论列表: </p>
    <% @comments.each do |comment| %>
      <div>
        <p>姓名: <%= comment.author_name %></p>
        <p>评论正文: <%= comment.content %></p>
      </div>
    <% end %>
  </div>

增加完上面几步,在文章的show页面就可以看到评论功能了

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论