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页面就可以看到评论功能了
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论