Rails 4: 更新属性后 post 一条消息

Rails 4: After updating an attribute post a message

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

例如:用户更新工单状态后,评论部分将发布一条消息报告"Ticket has been closed"。 (没有即时消息,而是永久消息)。

tickets_controller.rb

def open 
   @ticket = Ticket.find(params[:ticket_id])
   @ticket.update_attributes(:ticket_status, "closed")
   redirect_to ticket_path
end

您可以将会话用于此目的。

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一样清除会话

如果您希望它持久存在,您需要将消息存储在数据库中。比如说 ex- 有一张票被提出(票证模型)并且有人将其关闭。后端的属性将更新工单模型的属性状态。

 def update
   tkt = Ticket.where(id: 1)
   tkt.update_attributes(status: 1)
 end  

如果这是一个 ajax 调用,您可以发送一个带有消息的响应数据,如 "Ticket closed " 并在 [=22= 的成功回调中相应地显示在 html 页面上] 称呼。如果是服务器调用,请刷新页面并使用 Ticket 模型中的状态属性来创建消息。

您可以使用一些枚举,例如

{0 => "Ticket Open", 1 => "Ticket closed", 2 => "Ticket in progress" }

如果消息不是通用的并且每次都需要更多自定义,最好创建整个消息并将其保存为相关模型中的一个属性并且不需要枚举。