Rails:渲染命名空间的多态部分

时间:2013-04-25 17:40:26

标签: ruby-on-rails view namespaces polymorphic-associations

我有一个名为Update的多态模型。通常,我可以使用简单的:

呈现其关联的updatable模型
<%= render @update.updatable %>

不幸的是,如果我从命名空间控制器中调用此方法,那么Rails也会尝试命名视图路径,搜索admin/reviews/review而不是reviews/review。这会导致错误,如:

Missing partial admin/reviews/review

通常我可以硬编码变通方法,例如:

<%= render :partial => "/reviews/review", :locals => {:review => @update.updatable}

如果关联不是多态的,那就没关系,但既然如此,如果updatable不是Review,我就会收到错误。不幸的是,我有几十种可能的updatable,并且使用case语句对它们进行分支将很难维护。

我有没有想到更简单的方法?

1 个答案:

答案 0 :(得分:5)

您可以从模型中定义部分路径。它是这样的:

class Review
  def to_partial_path
    "/reviews/review"
  end
end