我目前有一个应用程序,允许用户对名为“作品”的博客文章发表评论。以下是模型关系:
class User < ActiveRecord::Base
has_many :works
has_many :comments
class Work < ActiveRecord::Base
belongs_to :user
has_many :comments
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
belongs_to :work
Works 展示页面上有一个表单,允许用户发表评论:
<%= form_for([@work, @comment]) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Post feedback or contribute content
to this work!" %>
</div>
<%= f.submit "Post", class: "btn btn-small btn-primary" %>
<% end %>
由于评论表单位于 Works 页面上,因此 Works 控制器具有以下用于评论的构建逻辑:
def show
@work = Work.find(params[:id])
@comment = @work.comments.build
@comment.user = current_user
@activities = PublicActivity::Activity.order("created_at DESC").where(trackable_type: "Work", trackable_id: @work).all
@comments = @work.comments.order("created_at DESC").where(work_id: @work).all
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @work }
end
end
评论控制器然后创建评论:
def create
@work = Work.find(params[:work_id])
@comment = @work.comments.build(params[:comment])
@comment.user = current_user
if @comment.save
#flash[:success] = "Post created!"
redirect_to @work
else
render 'home#index'
end
end
我的问题是作品展示页面将显示提交评论的用户名,但由于某种原因,即使数据库中有内容值,它也不会显示“内容”字段的值!我没有收到任何错误消息。我只是得到一个空框,内容文本应该在哪里。
这是显示内容的作品展示页面(减去 html 格式):
<% @comments.each do |comment| %>
<%= image_tag @comment.user.photo.url(:avatar) %> <%= link_to @comment.user.full_name, @comment.user if @comment.user %>
<%= @comment.content %>
<% end %>
如果我将@comment.content 替换为@comment.work_id 之类的内容,我将在网页上显示数字“1”。正如我之前提到的,数据库中存储的内容确实存在有效值。为什么不显示?为什么没有错误?
谢谢!!