#ruby-on-rails
#ruby-on-rails
Вопрос:
у меня есть резервный код :
<%= link_to 'Get started now !',play_path ,:alert => 'Eroare bla bla bla',:notice => 'E ok' %>
Как я могу вывести в html на странице ‘play_path’ значение :alert?
мой контроллер выглядит следующим образом
def index
@alert = flash[:alert]
@notice = flash[:notice]
end
и, на мой взгляд, у меня есть
<%=@alert %>
Он просто ничего не отображает, но если в моем контроллере я изменяю @alert = :blablabla
, на мой взгляд, он отображает «blablabla»
Ответ №1:
В вашей ссылке:
<%= link_to 'Get started now !',play_redirect_path ,:alert => 'Eroare bla bla bla',:notice => 'E ok' %>
В вашем контроллере
def redirect
redirect_to play_path, :alert => params[:alert]
end
def show
@alert = flash[:alert]
end
На ваш взгляд
<%= @alert %>
Вам также нужно будет настроить маршрут в вашей конфигурации routes.rb
match "play/redirect" => "plays#redirect"
Комментарии:
1. я добавил в свой контроллер индекс def @alert = flash [: alert] @notice = flash [:notice] , и когда я использую этот код: <%=@alert%> это ничего не делает :-?? если я сделаю это в моем контроллере @alert =:blablabla , отобразится текст blablabla :-??
2. почему я не могу просто выполнить @alert = flash [:alert] в контроллере? (похоже, это не работает)
3. Вы можете, я только что протестировал это. Выполняете ли вы <%=@alert%>, по вашему мнению? Если это не работает, пожалуйста, опубликуйте код для связанных с вами представлений и контроллеров.
4. Проблема в том, что флэш-уведомления являются свойством redirect_to, а не link_to. Вот почему в моем первоначальном ответе я упомянул: alert является ключом в хэше параметров. Если вы хотите использовать его в своем link_to, то оно должно ссылаться на действие контроллера, которое перенаправляет на play_path с прикрепленным уведомлением о flash. Я обновлю свой ответ, чтобы отразить это.
5. я вроде как подозревал, что это была проблема, поскольку я погуглил это, спасибо 🙂