Rails在错误的目录中寻找部分内容

nul*_*ull 5 namespaces ruby-on-rails partials

我有一个多态Review模型。命名空间模型User::Library::Publication是可审查的。评论创建正确,但是当我尝试通过局部显示它们时,Rails查找错误的目录。

在我看来:

<%= render @review %>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Missing partial user/library/reviews/review with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder]}
Run Code Online (Sandbox Code Playgroud)

Rails显然是在名称空间的目录中views/user/library而不是/views/reviews。中寻找审阅部分。知道为什么会这样吗?

Ric*_*eck 5

如果要从部分模板路径中删除命名空间,则可以在中设置prefix_partial_path_with_controller_namespace变量config/application.rb

# config/application.rb
config.action_view.prefix_partial_path_with_controller_namespace = false
Run Code Online (Sandbox Code Playgroud)

这将在您定义局部路径时加载(不包含名称空间)。

您可以在此处看到原始的“拉取请求”


Zed*_*TuX 0

如果您使用名称空间,则必须创建文件夹/子文件夹,这样 Rails 就不会查找错误的位置。

如果你想强制部分路径,只需使用:

render :partial => "review"
Run Code Online (Sandbox Code Playgroud)

并创建将review.html.erb文件重命名为_review.html.erb