0

我目前正在尝试每次自定义方法(过程!)在我的事务控制器中返回 false 或 true 时显示一条消息。但是,它只为每个 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!”返回的每个 false 显示它。

提前致谢。

4

1 回答 1

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?
于 2012-11-18T01:02:04.967 回答