从控制器和视图渲染部分

时间:2015-05-20 09:06:48

标签: ruby-on-rails ruby render partials

在我的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。 我想要做的是从<%= render 'lista' %>内拨打listb.html.erb。 但是当我这样做时,我收到一条错误消息,指出找不到部分_lista

你有想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您需要创建_list.html.erb 部分(任意文件名)文件,以便在lista.html.erblistb.html.erb之后访问它,之后您可以根据需要进行访问

例如: -

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

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

答案 2 :(得分:1)

您应创建名称为 _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' %>