如何在 Rails 上显示 Ruby 中已删除元素的名称?

How do I display the name of a deleted element in Ruby on Rails?

我有一个简单的 Rails 应用程序,我可以在其中创建对象(例如帖子)。到目前为止,我可以一个接一个地编辑和删除它们,但现在我想要 <%= notice %> 回显 确认删除后删除的对象的名称。这可能吗?如果是,怎么做?

这在Rails中是一个极其常见的任务,惯用的解决方案是通过the flash数组将有关已删除记录的一些数据转发给后续的GET请求。

您的控制器的 destroy 操作应如下所示:

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

  redirect_to posts_path, notice: "#{@post.name} was deleted"
end

在您的索引操作中,您将能够访问 flash[:notice] 以获取在上一个操作中生成的字符串。

您需要将要回显的详细信息(例如姓名)存储在某处,因为对象本身将在重定向后消失。我会为此使用 flash

# in the controller
def destroy
  thing = Thing.find(params[:id])
  thing.destroy

  redirect_to things_path, :notice => "Thing #{thing.name} was deleted"
end

# in the index view
<% if flash[:notice] %>
  <div class="notice"><%= flash[:notice] %></div>
<% end %>