从控制器和视图渲染部分

Render partial from controller and from view

在我的 Rails 应用程序中,我从控制器和另一个 erb 文件中渲染一个 erb 文件,如下所示:

# a_controller.rb
class AController < ApplicationController
def index
    render 'lista'
end

# b_controller.rb
class BController < ApplicationController
def index
    render 'listb'
end

# lista.html.erb
<%= render 'list' %>

# listb.html.erb
Some content that I want to keep
<%= render 'list' %>

# _list.html.erb
Hello

如您所见,lista 仅呈现部分 _list。 我想做的是从 listb.html.erb 中调用 <%= render 'lista' %>。 但是当我这样做时,我收到一条错误消息,指出未找到部分 _lista

你有什么想法吗?

lista.html.erb 是一页,不是部分。您的代码正在寻找一个名为 lista 的部分,但它不存在。

我真的认为你应该创建一个名为 _lista 的新部分,你可以在 lista.html.erblistb.html.erb 中渲染它。您的控制器仍然可以 render 'lista' 这将呈现部分 _lista.

您需要创建 _list.html.erb 部分(任何文件名)文件以便在 lista.html.erblistb.html.erb 之后访问它可以随意访问。

例如:-

# lista.html.erb
<%= render 'listb' %>

lista.html.erb中我们可以调用当前目录中的listb_listb.html.erb)文件。

您应该创建一个名为 _lista.html.erb 的部分,或者您可以将文件名更改为 lista.html.erb_lista.html.erb.

当前文件 lista.html.erb 不是部分文件,这就是为什么当您尝试渲染 lista 部分文件时,rails 会为您产生错误

#lista.html.erb
##assuming list is in lista/list.html.erb 
<%= render 'lista/list' %>