【发布时间】:2018-05-10 04:38:22
【问题描述】:
我想通过 Ajax 调用提交帖子并使帖子从页面上消失。我无法弄清楚如何将它们连接在一起。我有一个包含待批准列表的页面,点击“批准”后,我希望帖子消失(我想我需要重新呈现所有待批准的帖子)。这是我的代码:
静态/_pending_approval.html.erb
%= link_to 'Approve', approve_post_path(pending_approval), class: 'btn btn-success btn-block', id: "approve_#{pending_approval.id }", remote: true %>
posts_controller.rb
def approve
authorize @post
respond_to do |format|
if @post.approved!
format.html { redirect_to root_path, notice: 'Time entry has been approved' }
format.js
else
format.html { render action: "index" }
end
end
end
这是我的问题。我不知道如何在不重新加载整页的情况下使帖子消失。我想我应该重新渲染我在“static/_admin.html.erb”中定义的部分'static/_pending_approval',它会渲染帖子列表。它看起来像这样:
'静态/_admin.html.erb'
<div class="pending-homepage row">
<h2>Items Pending Your Approval</h2>
<hr>
<%= render partial: 'pending_approval', locals: { pending_approvals: @pending_approvals } %>
</div>
'静态/_pending_approval.html.erb'
<% pending_approvals.each do |pending_approval| %>
<div class="homepage-block col-md-3">
<h4>
<%= pending_approval.user.full_name %>
</h4>
...
...
...
<% end %>
我有'posts/approve.js.erb' 文件,看起来像这样:
$('.pending-homepage').html('<%= escape_javascript render ????? %>');
我怎样才能让它工作?
【问题讨论】:
-
$('.pending-homepage').hide()不起作用? -
但是 .pending-homepage 是我在其中呈现帖子列表的 div,我不想隐藏所有帖子,我想隐藏我批准的那个。
-
所以你可以创建一个 div 来包装
.homepage-block并添加一个标识符,然后隐藏它。 -
好的,所以我有这个:
<div class="pending-homepage row" id="approval_2">和approve.js.erb:$('#approval_<%= @pending_approval.id %>').hide(),但它会抛出一个错误ActionView::Template::Error (undefined methodid' for nil:NilClass)`
标签: ruby-on-rails ajax