我的评论应用程序工作,但唯一的问题是每当我刷新页面时评论消失。在日志中它显示正文插入评论表(它被保存)。我在这里做错了什么?任何帮助我将不胜感激。谢谢。
查看#show
<div id="comments"></div>
<%= form_for :comment,:remote => true,:url=> {:controller=>"comments",:action=>"create"},:html => { :id => 'new-comment'} do |f| %>
<%= f.text_area(:body) %>
<div class="errors"></div>
<%= f.submit "post" %>
<% end %>
评论控制器
class CommentsController < ApplicationController
respond_to :js
def create
@deal=Deal.find(1)
@comment =@deal.comments.build(params[:comment])
@comment.save
respond_with( @comment, :layout => !request.xhr? )
end
def show
@comment=Comment.all
@deal=Deal.find(1)
@comment=@deal.comments
end
end
create.js.erb
$('#comments').append("escape_javascript(@comment.body)");
答案 0 :(得分:1)
我看不到你的评论在你的节目模板中显示的位置。
这样的事情怎么样?
<div id="comments">
<% @comments do |comment| %>
<%= comment.body %>
<% end %>
</div>
<%= form_for :comment,:remote => true,:url=> {:controller=>"comments",:action=>"create"},:html => { :id => 'new-comment'} do |f| %>
<%= f.text_area(:body) %>
<div class="errors"></div>
<%= f.submit "post" %>
<% end %>
注意,您需要在控制器中设置@comments
或使用其他方式获取评论,例如@view = View.find(params[:id])
和<%= @view.comments.each do |comment| %>...
答案 1 :(得分:0)
我猜这个评论与未分配的帖子有一个belongs_to关系。
在您的表单中,您应该添加
<%= f.hidden_field :post_id, @post.id %>
如果你想按书来玩,post_id应该是attr_protected,而是在评论控制器中手动分配
@comment = Comment.new(params[:comment])
@comment.post_id = params[:comment][:post_id]
@comment.save