我有一个名为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
语句对它们进行分支将很难维护。
我有没有想到更简单的方法?
答案 0 :(得分:5)
您可以从模型中定义部分路径。它是这样的:
class Review
def to_partial_path
"/reviews/review"
end
end