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