I want a method in app/controllers/application.rb that can
prepend/append text to whatever template gets rendered. Of course I
can't call render twice w/o getting a double render error, so is this
possible?

I want to redirect after a delay using a meta refresh. Here's what I've
got:

app/controllers/application_controller.rb:

def redirect_after_delay (url, delay)
  @redirect_delay = delay
  @redirect_url = url
  render
end

app/views/layouts/application.html.erb

<!DOCTYPE html>
<html lang="en">
  <head>
    <%= yield :refresh_tag %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

So then if I want to add a redirect-after-delay, I add the following to
1) my controller and 2) the action's view:

app/controllers/my_controller.rb

def my_action
  redirect_after_delay 'http://www.google.com', 3 if some_condition
end

app/views/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>

Since the content_for block never changes, would be nice to just call
something from the redirect_after_delay method to add it to whatever
template is going to be rendered.
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to