我有一个类层次结构(简化)如下。
Activity
SubactivityA < Activity
SubactivityB < Activity
其中activity
是Activity
的实例,subactivityA
是SubactivityA
的实例,subactivityB
是SubactivityB
的实例。
我可以使用这些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)
谢谢!
答案 0 :(得分:1)
您可以使用ActiveRecord的becomes来获得所需的网址。这对于您希望子类显示为超类的单表继承结构非常有用。
以下是一个例子:
<% @activities.each do |activity| %>
<%= link_to 'Name', edit_activity_path(activity.becomes(Activity)) %>
<% end %>