вывод в html rails переданного значения

#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. я вроде как подозревал, что это была проблема, поскольку я погуглил это, спасибо 🙂