Dynamic Paths in Helper

前端 未结 3 1097
生来不讨喜
生来不讨喜 2021-01-31 17:31

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_pa         


        
相关标签:
3条回答
  • 2021-01-31 17:54

    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
    
    0 讨论(0)
  • 2021-01-31 18:05

    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.

    0 讨论(0)
  • 2021-01-31 18:13

    I would use a partial for this - instead of a helper. Wherever you want to display these links in your views, simply render the partial:

    <%= render :partial => "admin_links", :locals => { :model => model } %>
    

    In _admin_links.html.erb just paste the original code:

    <% if current_user %>
      <%= link_to "Edit", edit_model_path(model) %>
      <%= link_to "New", new_model_path %>
      <%= link_to "Delete", model, :confirm => "Your a Noob", :method => :delete %>
    <% end %>
    
    0 讨论(0)
提交回复
热议问题