views:

238

answers:

4

I am in the beginning stages of learning ruby and RoR.

I have a Ruby on Rails project that tracks jobs a server is running. Right now, when you 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.

So, 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?

+4  A: 

I may be missing something obvious, but you should just be able to do

flash[:notice] = "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.

Emily
Well, that was simple. Thanks!!
David Oneill
+1  A: 

You can always use the Rails link_to helper:

flash[:notice] = "Created job job number #{link_to update.id, :controller => 'jobs', :action => 'list', :job => update.id}."
mattwindwer
I dont think link_to is going to work in controller unless you include the helper modules in your controller but then that will be polluting namespace.
nas
This didn't work.
David Oneill
+2  A: 

You can use an alias in your controller to the *link_to* function, or the RailsCast recipe:

"Created job job number #{@template.link_to update.id, 
  :controller => 'jobs', :action => 'list', :job => update.id}."

http://railscasts.com/episodes/132-helpers-outside-views

nanda
This also works. Thanks!
David Oneill
+3  A: 

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}"
mikej