Мне нужен метод в app / controllers / application.rb, который может добавлять / добавлять текст к любому отображаемому шаблону. Конечно, я не могу вызвать рендер дважды без получения двойной ошибки рендеринга, так возможно ли это?
Я хочу перенаправить после задержки, используя метаобновление. Вот что у меня есть:
приложение / контроллеры / application_controller.rb:
def redirect_after_delay (url, delay)
@redirect_delay = delay
@redirect_url = url
render
end
приложение / просмотров / макеты / application.html.erb
<!DOCTYPE html>
<html lang="en">
<head>
<%= yield :refresh_tag %>
</head>
<body>
<%= yield %>
</body>
</html>
Итак, если я хочу добавить перенаправление после задержки, я добавляю следующее к 1) моему контроллеру и 2) представлению действия:
приложение / контроллеры / my_controller.rb
def my_action
redirect_after_delay 'http://www.google.com', 3 if some_condition
end
приложение / просмотров / my_controller / my_action.html.erb
<% content_for :refresh_tag do %>
<meta http-equiv='refresh' content='<%=@redirect_delay%>;url=<%=@redirect_url%>'>
<% end %>
<h1>Please wait while you are redirected...</h1>
Поскольку блок content_for
никогда не изменяется, возможно ли сделать это каким-либо общим способом, чтобы мне не нужно было вставлять <%= yield :refresh_tag %>
в каждый шаблон? (например, может redirect_after_delay
добавить его в любой шаблон, который будет отображаться?)