ruby-on-rails - 如何在 Rails 中异步执行 Controller.destroy 操作?

标签 ruby-on-rails ruby ruby-on-rails-4 controller

我可以通过以下代码轻松删除rails应用程序中post 同步的条目:

观看次数

<% @post.each do |post| %>
 <tr>
   <td colspan="3"><%= link_to 'Destroy', post, :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger' %></td>
 </tr>
<% end %>

Controller 类

def destroy
 @post = Post.find(params[:id])
 @post.destroy
 respond_to do |format|
   format.html redirect_to(posts_url) }
   format.xml  { head :ok }
 end
end

这很好用。如何使这个销毁进程异步。因此,我不需要添加路由刷新页面

编辑

添加更多说明

任务是使destroy方法异步。这样客户端就不会等待响应,并且destroy方法将在后台async运行。而且 destroy 方法没有保证完成时间。

另一个例子可能是:我必须一次删除多个帖子。

最佳答案

尝试remote: true选项,

<%= link_to 'Destroy', post, :method => :delete, remote: true, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger' %>

def destroy
  @post = Post.find(params[:id])
  @post.destroy

  # Just Guessing you have @posts to refresh and `posts_template` using it.
  @posts = Post.all 

  respond_to do |format|
    format.html redirect_to(posts_url) }
    format.xml  { head :ok }
    format.js { render 'posts.js.erb' }
  end
end

posts.js.erb

$('some_element').replaceWith('<%=j render 'posts_template' %>');

请根据需要进行更改。我只是猜测。

关于ruby-on-rails - 如何在 Rails 中异步执行 Controller.destroy 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129766/

相关文章:

ruby - Watir 不适用于 Ruby 1.9.3

ruby-on-rails - 使用 add_reference 时指定自定义索引名称

javascript - 将两个相同的 select2 表单添加到同一页面

ruby-on-rails - Rails4 InvalidAuthenticityToken 生产随机错误

ruby-on-rails - 如何在哈希数组中找到最大值?

ruby-on-rails - 使用 capybara has_context 一次检查多行

sql - Rails 5 查询以从我当前正在查看的帖子以外的同一类别中提取帖子

ruby-on-rails - Rails : to_json method, 添加函数返回值

ruby - 如何使用从 heroku 以编程方式获取当前主机并在 rspec 测试中使用它?

sql - 使用Rails 4在日志中显示SQL查询