如何在更新属性以反映更改后发布或呈现消息?(我在网上找不到关于这个任务的任何信息)
例如:一旦用户更新了票据状态,将会在评论区发布一条消息,报告"票据已关闭"。(没有闪光消息,但一个永久的)。
tickets_controller.rb
def open
@ticket = Ticket.find(params[:ticket_id])
@ticket.update_attributes(:ticket_status, "closed")
redirect_to ticket_path
end
如果希望消息持久化,则需要将消息存储在数据库中。比如说,有一张票被提出(票模型),有人关闭它。后端属性将更新票证模型的属性状态。
def update
tkt = Ticket.where(id: 1)
tkt.update_attributes(status: 1)
end
如果这是一个ajax调用,你可以发送一个响应数据的消息,如"票关闭",并在ajax调用的成功回调中相应地显示在html页面上。如果是服务器调用,刷新页面并使用Ticket模型中的status属性来创建消息。
您可以使用一些枚举,如
{0 => "Ticket Open", 1 => "Ticket closed", 2 => "Ticket in progress" }
如果消息不是通用的,并且每次都需要一些更多的自定义,那么最好将整个消息创建并保存为相关模型中的属性,而不需要使用枚举。
您可以将会话用于此目的。
def open
@ticket = Ticket.find(params[:ticket_id])
@ticket.update_attributes(:ticket_status, "closed")
session[:close_message] = "Ticket has been closed"
redirect_to ticket_path
end
之后在视图中显示,如
<%= session[:close_message] %>
,但要确保在显示释放内存的消息后清除会话,如session[:close_message] = nil