Recentemente ho convertito alcuni dei miei modelli da ERB a Haml. Per lo più è diventato più pulito e più bello, ma le definizioni dei pulsanti hanno iniziato a risucchiare.Ottieni percorso percorso dinamicamente
voglio convertire questo
= link_to t('.new', :default => t("helpers.links.new")),
new_intern_path,
:class => 'btn btn-primary' if can? :create, Intern
a qualcosa di simile
= new_button Intern
ho diverse altre entità oltre Intern
così tutte le altre pagine potrebbero trarre vantaggio da questo.
Così, ho digitato il codice
def new_button(person_class)
return unless can?(:create, person_class)
new_route_method = eval("new_#{person_class.name.tableize}_path")
link_to t('.new', :default => t("helpers.links.new")),
new_route_method,
:class => 'btn btn-primary'
end
Sta funzionando come previsto. Non sono sicuro di quella chiamata eval
(perché è malvagia e tutto il resto). C'è un modo più semplice e meno malvagio?
Sì, è molto meglio! –