Подтвердить что ты не робот

Использование флэш-сообщений в формате HTML в Rails

Я использую flash [: error] для отображения простого сообщения пользователям о том, что они не могут выполнять операцию удаления при определенных условиях. У меня также есть ссылка, которая поможет им получить информацию о сущности, которую они хотели бы удалить, и почему они не могут этого сделать.

Можно ли включить эту гиперссылку во флэш-сообщение? Это означало бы, что у меня будет HTML-фрагмент в моем контроллере. Если нет, как бы я это сделал?

4b9b3361

Ответ 1

Если вы хотите включить ссылку в флеш-сообщение от контроллера, есть 2 проблемы. Создание ссылки, а затем ее отображение в виде HTML.

Чтобы использовать ссылку link_to в контроллере, полностью квалифицируйте его.

Чтобы строка отображалась как html (вместо экранирования), вызовите метод html_safe в строке. Таким образом, строка в вашем контроллере может выглядеть так:

flash[:error] = "You can't do that. #{ActionController::Base.helpers.link_to "Here why.", '/more_info.html'}".html_safe

Ответ 2

Flash-объект является держателем для хранения фрагментов/сообщений вида и сохраняется для одного перенаправления с использованием сеанса. Я не вижу абсолютно никакой проблемы при сохранении ссылки или, лучше, URL.

пример:

redirect_to posts_path, :alert => "You cannot do that", :flash => { :url => post_path(@post) }

и в режиме макета обычные подозреваемые:

- if flash[:alert]
  ...
  - if flash[:url]
    = link_to "blah blah", flash[:url]

Ответ 3

Вы можете. Вы также можете добавить помощника в свой контроллер.

Или вы можете сделать это с помощью системы i18n.