I am learning Ruby and Rails.
I have a Ruby on Rails project that tracks jobs a server is running. Right now, when I manually create a new job, it announces:
flash[:notice] = "Created job job number #{update.id}."
I would like to turn the #{update.id}
into a link to the job on the job list.
The URL for going to the job is jobs/list?job=1234
where 1234 is the update.id
that is displayed in the flash notice.
Is it possible to put a link into a flash[:notice]
statement? Or do I need to re-work how this message is being displayed in order to turn it into a link?
Don't forget to add .html_safe
at the end of the notice, if you're using Rails3.
So it would say flash[:notice] = "Your message".html_safe
The @template
instance variable is no longer available in Rails 3.
Instead you can use this in your controller:
flash[:notice] = "Successfully created #{view_context.link_to('product', @product)}.".html_safe
Hope this helps :)
I may be missing something obvious, but you should just be able to do
flash[:notice] = %Q[Created job number <a href="/jobs/list?job=#{update.id}">#{update.id}</a>]
and then just make sure you're not escaping the content of the flash when you display it in your view.
As nas commented, link_to
is not available from your controller unless you include the appropriate helper module, but url_for
is. Therefore I'd do pretty much what Emily said except use url_for
instead of hardcoding a URL.
e.g. if a job were defined as a resource in your routes:
link = "<a href=\"#{url_for(update)}\">#{update.id}</a>"
flash[:notice] = "Created job number #{link}"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With