Rails 4:更新属性后发布消息



如何在更新属性以反映更改后发布或呈现消息?(我在网上找不到关于这个任务的任何信息)

例如:一旦用户更新了票据状态,将会在评论区发布一条消息,报告"票据已关闭"。(没有闪光消息,但一个永久的)。

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

相关内容

  • 没有找到相关文章

最新更新