2012-06-19 4 views
5

최근에 내 템플리트 중 일부를 ERB에서 Haml로 변환했습니다. 대부분 깨끗하고 멋지게되었지만 버튼 정의가 빨기 시작했습니다.경로 경로를 동적으로 가져 오기

나는 내가 그렇게 다른 모든 페이지뿐만 아니라이 혜택을 누릴 것입니다 Intern 외에 여러 가지 다른 기관이이

= new_button Intern 

같은 것을이

= link_to t('.new', :default => t("helpers.links.new")), 
      new_intern_path,          
      :class => 'btn btn-primary' if can? :create, 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 호출 (악마이기 때문에). 더 단순하고 사악한 방법이 있습니까?

def edit_button(person) 
    return unless can?(:edit, person) 

    link_to t('.edit', :default => t("helpers.links.edit")), 
      send("edit_#{person.class.name.singularize.underscore}_path", person), 
      :class => 'btn btn-mini' 
end 

답변

6

아, 여기에 더 나은 버전입니다.

def edit_button(person) 
    return unless can?(:edit, person) 

    link_to t('.edit', :default => t("helpers.links.edit")), 
      edit_polymorphic_path(person), 
      :class => 'btn btn-mini' 
end 
+0

은 다행 당신이 날 네, 훨씬 더 그것을 – Viren

관련 문제