假设我有一个Product
模型,我的控制器可以同时创建5个新产品。我现在做的是渲染回同一页面,但我想要做的还是在flash中渲染产品已经创建。所以它会说:
Successfully created: Milk, Soup, Cheese, Bread, Candy
而不是
Successfully created Products
如何做到这一点?
答案 0 :(得分:2)
这样的事情应该有效:
redirect_to :back, notice: "Succesfully created: #{@created_products.map(&:name).join(', ')}"
假设@created_products是您刚刚创建的产品数组,它们每个都有一个名为name的属性。
哦,当然你需要在你的HTML中使用它:
<div class="notice"><%= notice %></div>
答案 1 :(得分:1)
在控制器中执行此操作。你可能有一个创建动作,你实际创建这些对象,他们的问题有一个name
属性,对吧?因此,在创建对象时,将它们保存在数组中,然后使用map
和join
方法将它们组合在一起。像这样:
def create
successful = []
# loop through the parameters
obj = MyModel.new(...)
if obj.save
successful << obj
end
# end loop
flash[:notice] = "Succesfully created: #{successful.map(&:name).join(', ')}"
redirect_to my_model_path
end
Map运行你传入的方法,所以name
,在数组的每个memebrs上,并返回一个数组,其内容是该方法的结果:换句话说,你得到一个他们所有的数组名。加入将它们放在一起,用你输入的任何字符串分开。所以你得到的东西就像&#34;牛奶,奶酪和#34;。