1

アップデート

モデル呼び出しをから変更することで、うまく機能させることができます

@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 に答える