我目前有一个评论部分,仅在整个页面刷新后发布。虽然在帖子之后页面本身刷新,但整个页面刷新效率低下。我想知道是否有人可以帮助我使用js文件来刷新那部分,我仍然与我的js摇摇欲坠。任何帮助深表感谢!谢谢!
这是 create.js 的当前js:
$("#comments").html("<%= escape_javascript(render(:partial => @micropost.comments)) %>");
评论控制器
class CommentsController < ApplicationController
def create
@micropost = Micropost.find(params[:micropost_id])
@comment = @micropost.comments.build(params[:comment])
@comment.user_id = current_user.id
@comment.save
respond_to do |format|
format.html
format.js
end
end
end
评论栏
<div id='CommentContainer-<%= micropost.id%>' class='CommentContainer Condensed2'>
<div class='Comment'>
<%= render :partial => "comments/form", :locals => { :micropost => micropost } %>
</div>
<div id='comments'>
<%=render micropost.comments %>
</div>
</div>
答案 0 :(得分:1)
你应该在你的控制器中使用这样的东西。这将根据需要触发js和html模板。
class CommentsController < ApplicationController
respond_to :html
respond_to :js, only: [ :create ]
def create
# ...
respond_with @comment if @comment.save
end
def index
@comments = Microcomment.find(params[:id]).comments
respond_with @comments
end
end
然后,这将要求views / comments / create.js回复类似:
// create.js.erb
$("#comments").get("/api/micropost/<%= @micropost.id %>/comments");
评论的观点为index.html.erb
# index.html.erb
<% @comments.each do |comment| %>
<!-- Display your comment here -->
<% end %>
现在,您只需在路线中为match
设置/api/micropost/:id/comments
,然后就可以按照所需的html格式提供评论列表。
请注意,这并非完全安静,但我希望保留/api
以区分来自网址级别的xhr的来电。