Недавно я преобразовал некоторые из своих шаблонов из ERB в Haml. В основном это стало чище и приятнее, но определения кнопок начали
Я хочу преобразовать это
= link_to t('.new', :default => t("helpers.links.new")),
new_intern_path,
:class => 'btn btn-primary' if can? :create, Intern
во что-то подобное
= new_button Intern
У меня есть несколько других сущностей, кроме Intern
, так что все остальные страницы тоже выиграют от этого
Итак, Я набрал этот код
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
Он работает, как и ожидалось. Я просто не уверен в этом вызове eval
(потому что это зло и все такое). Есть ли более простой и менее злой способ?