Rails Helper Handle Flash с ул - PullRequest
       3

Rails Helper Handle Flash с ул

0 голосов
/ 10 октября 2019

Я пытаюсь оформить флэш-уведомление внутри помощника, проходящего по массиву. Итак, что-то вроде:

def import
 @fruit = Fruit::Import.run(params[:food_id], params[:file]).result
 if @fruit.empty?
  flash[:notice] = 'Success'
 else
  flash_message(@fruit)
 end
end

Я убедился, что включил в контроллер включить FoodsHelper в верхней части контроллера.

Итак, внутри помощника у меня есть:

def flash_message(fruit)
 content_tag(:ul, class: 'alert alert-error') do
  fruit.each do |type, msg|
   msg.each do |item|
    content_tag(:li, item, class: "flash_#{type}")
   end
  end
 end
end

У надежды будет ul, и каждый из элементов в массиве из fruit будет отображаться как элемент списка. Это, однако, приводит к неопределенному методу `content_tag 'Вы имели в виду content_type?

Есть ли хороший способ итерировать флэш-уведомление с content_tag?

1 Ответ

0 голосов
/ 10 октября 2019

Вы могли бы использовать некоторый код из этого (я действительно не знаю, что вы пытаетесь сделать здесь)

У надежды был бы ul и каждый изэлементы в массиве из фруктов будут отображаться как элемент списка. Это, однако, приводит к неопределенному методу `content_tag 'Вы имели в виду content_type?

Если вы хотите использовать content_tag от контроллера, вам нужно добавить это:

include ActionView::Helpers::TagHelper

или в Rails 5 просто используйте helpers.content_tag

helpers.content_tag(:ul, class: 'alert alert-error') do ...

Есть ли хороший способ итерировать флэш-уведомление с помощью content_tag?

Нет такой вещи, как 'Повторите флэш-память [: note] с помощью content_tag '

Может быть, вы хотите сделать это:

Контроллер:

def import
 @fruit = Fruit::Import.run(params[:food_id], params[:file]).result
 if @fruit.empty?
  flash[:notice] = 'Success'
 else
  flash[:notice] = @fruit
 end
end

Помощник:

def flash_message
 content_tag(:ul, class: 'alert alert-error') do
  flash.each do |type, msg|
   if msg.is_a? Array
     msg.each do |item|
      content_tag(:li, item, class: "flash_#{type}")
     end
   else
    content_tag(:li, msg, class: "flash_#{type}")
   end
  end
 end
end

Вид:

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