1

更新

我必须通过更改 Model 调用来让它工作

@comments = VideoComment.all(:conditions => { :video_id => @video.id}, :limit => 5, :order => :created_at) 

@comments = VideoComment.last(5).reverse

它有效,但它给了我所有视频的最后一个视频评论,而我只想要当前视频中的评论(@video.id)。

关于如何做到这一点的任何线索?


我有一个Video控制器和一个VideoComments管理控制器注释的Video控制器。我试图让我的远程表单使用 ajax 更新评论列表,但它似乎不起作用。你能找出我做错了什么吗?

显示页面的 HTML 代码:

- if current_user
    #comment-form
      = render 'video_comments/comment_form'
  %ul
    #comments
      = render @comments

video_comments/_comment_form.html.haml

= form_for current_user.video_comments.build(:video_id => params[:id]), :remote => true do |f|
  .form-fields
    .comment-content
      = f.text_area :content, rows:2
    = f.hidden_field :video_id
    = f.hidden_field :user_id
    .submit-form
      = f.submit "Add a comment", :class => "btn btn-default "

Video_Comments控制器create动作 :

 def create
    @comment = VideoComment.create(params[:video_comment])
    @video = @comment.video
    @comments = VideoComment.all(:conditions => { :video_id => @video.id}, :limit => 5, :order => :created_at) 
    render :toggle      
 end

toggle.js.erb管理页面更改的文件:

$("#comment-form").html("<%= escape_javascript render 'comment_form' %>");
$("#comments").html("<%= escape_javascript render @comments %>");
4

1 回答 1

2

如果您使用的是 Rails 3,您可以这样做

@comments = VideoComment.where(:video_id => @video.id).order(:created_at).limit(5) 

或者,如果您有正确定义的关系,您也可以这样做

@comments = @video.comments.order(:created_at).limit(5)
于 2012-07-25T00:04:59.223 回答