超级link_to

时间:2013-09-07 02:42:14

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个类层次结构(简化)如下。

Activity
SubactivityA < Activity
SubactivityB < Activity

其中activityActivity的实例,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 个答案:

答案 0 :(得分:1)

您可以使用ActiveRecord的becomes来获得所需的网址。这对于您希望子类显示为超类的单表继承结构非常有用。

以下是一个例子:

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