Niedawno przekonwertowałem niektóre z moich szablonów z ERB na Haml. Przeważnie stało się czystsze i ładniejsze, ale definicje przycisków zaczęły ssać.Uzyskaj ścieżkę trasy dynamicznie
chcę przekonwertować ten
= link_to t('.new', :default => t("helpers.links.new")),
new_intern_path,
:class => 'btn btn-primary' if can? :create, Intern
aby coś takiego
= new_button Intern
mam kilka innych podmiotów oprócz Intern
więc wszystkie inne strony skorzystają z tego, jak dobrze.
Więc Wpisałem ten kod
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
To działa zgodnie z oczekiwaniami. Po prostu nie jestem pewna co do tego połączenia eval
(ponieważ jest złe i tak dalej). Czy istnieje prostszy i mniej zły sposób?
Tak, to jest o wiele lepiej! –