Dynamic Paths in Helper

dynamic, helper, path, ruby-on-rails

Solution

basically you need to transform the class name of the model into something pointing to the correct path.

model_name = m.class.to_s.underscore

And then use it to call the appropriate path methods

link_to "edit", send("edit_#{model_name}_path", m)

As an aside, you don't need to put the link_tos in `#{}` because that function simply returns a string.

Problem

I'm trying to create a helper method for my admin links. In quite a few views I have the code ``` <% if current_user %> <%= link_to "Edit", edit_model_path(model) %> <%= link_to "New", new_model_path %> <%= link_to "Delete", model, :confirm => "You're a Noob", :method => :delete %> <% end %> ``` that only display these when logged in. I would like to do something like this in their place ``` <%= admin_links(model) %> ``` and pass the current item into the application helper method ``` def admin_links(m) if current_user a = "#{link_to "edit" edit_m_path(m)}" a << "#{link_to "new" new_m_path}" a << "#{link_to "Delete", m, :confirm => "Your a Noob", :method => :delete}" end end ``` Or something of the like.

Original source