2013-09-07 2 views
1

다음과 같이 클래스 계층 구조 (단순화)가 있습니다. activityActivity의 인스턴스슈퍼 클래스 link_to

Activity 
SubactivityA < Activity 
SubactivityB < Activity 

subactivityASubactivityA의 예이며,이 subactivityBSubactivityB의 인스턴스이다.

나는이 link_to 전화를 사용할 수 있습니다

=link_to 'Name', edit_activity_path(activity) 
=link_to 'Name', edit_subactivitya_path(subactivityA) 
=link_to 'Name', edit_subactivityb_path(SubactivityB) 

내가 활동의 목록을 반복하고있어,이 서브 클래스를 알고 관련 경로를 지정하라고 요구한다. 자동으로 정확한 경로를 호출하는 방법이 있나요? (작동하지 않습니다.) 이렇게 모든 하위 클래스에서 작동합니까?

=link_to 'Name', edit_activity_path(activity) 

고마워요!

답변

1

ActiveRecord의 becomes을 사용하여 원하는 URL을 얻을 수 있습니다. 서브 클래스를 수퍼 클래스로 표시하려는 단일 테이블 상속 구조와 관련하여 주로 유용합니다.

<% @activities.each do |activity| %> 
    <%= link_to 'Name', edit_activity_path(activity.becomes(Activity)) %> 
<% end %> 
+0

감사 :

다음은 예입니다! 방금 시도했지만 여전히/activities/: id/하위 클래스와 관련된 경로 대신 편집합니다. – Dean

+0

그러면'edit_activity_path (activity)'가 작동합니다. 액티비티에 단일 테이블 상속을 사용하고 있습니까? –

+0

ActiveSupport 및 ActiveModel을 지원하는 Mongoid를 사용하고 있습니다. – Dean