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

时间:2015-03-17 01:15:22

标签: ruby-on-rails ruby ruby-on-rails-4 erb

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

2 个答案:

答案 0 :(得分:3)

这是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]以获取上一个操作中生成的字符串。

答案 1 :(得分:1)

您需要在某处存储要回显的详细信息(例如名称),因为重定向后对象本身将会消失。我会使用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 %>