更新
我可以通过从
更改模型调用来使其工作@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 %>");
答案 0 :(得分:2)
如果您使用的是Rails 3,则可以
@comments = VideoComment.where(:video_id => @video.id).order(:created_at).limit(5)
或者,如果你有正确定义的关系,你也可以
@comments = @video.comments.order(:created_at).limit(5)