1

我有一个名为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不是 a ,我会得到错误Review。不幸的是,我有几十个可能updatable的 s,用一个case语句来分支它们会很麻烦。

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

4

1 回答 1

5

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

class Review
  def to_partial_path
    "/reviews/review"
  end
end
于 2014-01-17T22:18:26.590 回答