Как показать флеш-сообщение о вновь созданных ресурсах? - PullRequest
0 голосов
/ 30 января 2012

Допустим, у меня есть модель Product, и мой контроллер позволяет создавать 5 новых продуктов одновременно. То, что я сейчас делаю, это рендеринг на ту же страницу, но я хочу также визуализировать, какие продукты были созданы во флэш-памяти. Так было бы сказано:

Successfully created: Milk, Soup, Cheese, Bread, Candy

вместо

Successfully created Products

Как бы это сделать?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Что-то вроде этого должно работать:

redirect_to :back, notice: "Succesfully created: #{@created_products.map(&:name).join(', ')}"

Предполагая, что @created_products - это массив продуктов, которые вы только что создали, и у каждого из них есть атрибут с именем name.

Да, и, конечно, вынужно это в вашем HTML:

<div class="notice"><%= notice %></div>
1 голос
/ 30 января 2012

Просто сделайте это в вашем контроллере.Возможно, у вас есть действие create, где вы на самом деле создаете эти объекты, и у них проблемы есть атрибут 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, для каждого из элементов массива и возвращает массив, содержимое которого является результатом этого метода: другими словами, вы получаете массив всех их имен.Объединение соединяет их вместе, разделенные любой строкой, которую вы вводите. Таким образом, вы получите что-то вроде «Молоко, сыр».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...