我正在尝试在每次自定义方法(进程!)在我的事务控制器中返回false或true时显示一条消息。但是,它只返回一次,每次为假,每次为真。下面是控制器中的代码:
def execute_all
@transaction = Transaction.find(:all)
#Execute all transactions
@transaction.each do |t|
if (t.process!)
#flash.keep[:noticeTransaction] = 'Transaction number: ' + t.id.to_s + ' executed Successfully!'
else
flash.keep[:errorTransaction] = 'Transaction cannot be executed -> Transaction Id: ' + t.id.to_s
end
end
respond_to do |format|
format.html { redirect_to transactions_url }
format.json { head :no_content }
end
以下是application.html.erb
中的代码<html>
<head>
</head>
<body>
<p style="color:red" class="error"><%= flash[:errorTransaction] %></p>
<p style="color:green" ><%= flash[:noticeTransaction] %></p>
<%= yield %>
</body>
我假设因为我只在应用程序布局中提到过一次(一个用于错误,一个用于成功),它只显示一次。我想知道如何显示方法“process!”返回的每个错误。
提前致谢。
答案 0 :(得分:0)
布局只显示一个,因为 只有一个。无论您是否使用flash
,keep
都会为每个密钥存储一条消息。
因此,每次设置flash.keep[:errorTransaction]
时,您都会覆盖上一条消息,而不是追加另一条消息。
要解决此问题,您可以在迭代事务时存储所有消息,然后将它们一次性存储在flash
上,例如:
messages = []
@transaction.each do |t|
if (t.process!)
messages << '<div class="some-class">your message in a wrapper</div>'
end
end
flash.keep[:errorTransaction] = messages.join if messages.any?