# Ajax 删除

  • 1 :remote => true让删除超链接变成ajax送出。

<%= form_for Post.new do |f| %>
  
<%= f.text_area :content, :class => "form-control" %>
<%= f.submit :class => "btn btn-primary" %>
<% end %> <% @posts.each do |post| %>
<%= post.user.display_name %>
<%= post.content %>

<%= link_to "Delete", post_path(post), :method => :delete, :remote => true, :class => "btn btn-danger" %>

<% end %>
<% end %>
app/controllers/posts_controller.rb
  def destroy
    @post = current_user.posts.find(params[:id])
    @post.destroy

-   redirect_to posts_path
+   render :js => "alert('ok');"
  end
  • 2 服务器回传数据,页面还没重新整理
    服务器回传了 alert('ok'); 字串,浏览器拿到之后就去执行,于是跳出一个 alert 视窗。
    这个时候虽然数据库的数据删除了,但是页面还没有重新整理。


    ajax_2.gif
  • 3 让数据重新整理

app/controllers/posts_controller.rb
  def destroy
    @post = current_user.posts.find(params[:id])
    @post.destroy

-   redirect_to posts_path
-   render :js => "alert('ok');"
  end
app/views/posts/destroy.js.erb
$("#post-<%= @post.id %>").remove();

解说:
一个 action 如果没有写明 redirect 或 render 的话,就会默认去找 action 名称的样板。于是这里就会去找 destroy.js.erb


ajax_1.gif

你可能感兴趣的:(# Ajax 删除)