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.
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.
Rails provides polymorphic routes to handle this problem: http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html
= link_to "Edit", polymorphic_path(model), :method => :put
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