Ruby on rails 渲染局部布局不显示任何内容

Ruby on rails 渲染局部布局不显示任何内容,ruby-on-rails,ruby,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3.1,我想要的效果是为html框实现一个可重用的组件。我发现人们似乎在使用下面的例子,但这对我不起作用。 我有: 不过,我可以在日志中看到: Processing by HomeController#index as HTML Rendered layouts/_box.html.erb (0.1ms) Rendered home/index.html.erb within layouts/application (1.2ms) 因此,框布局正在得到处理。它只是没有显示任何东西。 有什么想法吗 我使

我想要的效果是为html框实现一个可重用的组件。我发现人们似乎在使用下面的例子,但这对我不起作用。 我有:

不过,我可以在日志中看到:

Processing by HomeController#index as HTML
Rendered layouts/_box.html.erb (0.1ms)
Rendered home/index.html.erb within layouts/application (1.2ms)
因此,框布局正在得到处理。它只是没有显示任何东西。 有什么想法吗


我使用的是Rails 3.1.3和Ruby 1.9.2-p290。

可能您混淆了渲染部分内容和通过content\u生成内容的功能:

# app/views/home/index.html.erb
top
<% content_for :box do %>
Some content
<% end %>
bottom

# app/views/layouts/application.html.erb
<%= yield :box %>
<%= yield %>

# result
Some content
top
bottom
呈现部分内容:

# app/views/home/index.html.erb
top
<%= render 'layouts/box' %>
bottom

# app/views/layouts/_box.html.erb
Here is some content inside the box

# result:
top
Here is some content inside the box
bottom
通过content_为以下内容生成内容:

# app/views/home/index.html.erb
top
<% content_for :box do %>
Some content
<% end %>
bottom

# app/views/layouts/application.html.erb
<%= yield :box %>
<%= yield %>

# result
Some content
top
bottom
你可以做:

# app/views/home/index.html.erb
top
<p>Here is some content</p>
<%= render 'layouts/box' %>
bottom

# app/layouts/_box.html.erb
inside box
通常,布局文件夹用于容器中的布局。如果您需要跨不同控制器使用分部,请将其放置在app/views/shared/_your_partial.html.erb中

更多信息请点击此处: 对于以下各项的产量和含量:

对于partials:

可能您将渲染部分内容和通过内容单元生成内容混为一谈:

# app/views/home/index.html.erb
top
<% content_for :box do %>
Some content
<% end %>
bottom

# app/views/layouts/application.html.erb
<%= yield :box %>
<%= yield %>

# result
Some content
top
bottom
呈现部分内容:

# app/views/home/index.html.erb
top
<%= render 'layouts/box' %>
bottom

# app/views/layouts/_box.html.erb
Here is some content inside the box

# result:
top
Here is some content inside the box
bottom
通过content_为以下内容生成内容:

# app/views/home/index.html.erb
top
<% content_for :box do %>
Some content
<% end %>
bottom

# app/views/layouts/application.html.erb
<%= yield :box %>
<%= yield %>

# result
Some content
top
bottom
你可以做:

# app/views/home/index.html.erb
top
<p>Here is some content</p>
<%= render 'layouts/box' %>
bottom

# app/layouts/_box.html.erb
inside box
通常,布局文件夹用于容器中的布局。如果您需要跨不同控制器使用分部,请将其放置在app/views/shared/_your_partial.html.erb中

更多信息请点击此处: 对于以下各项的产量和含量:

对于partials:

隐藏内容

<%= @var %>
显示内容

所以可能是:

<%= render :layout => 'layouts/box' do %>
  <p>Here is some content</p>
<% end %>
你需要什么

隐藏内容

<%= @var %>
显示内容

所以可能是:

<%= render :layout => 'layouts/box' do %>
  <p>Here is some content</p>
<% end %>

您需要的。

您忘记输出“渲染”调用:

<%= render ... %>
而不是

<% render ... %>

您忘记输出“渲染”调用:

<%= render ... %>
而不是

<% render ... %>

您忘记打印渲染。如果您忘记打印渲染,请使用。使用它并不能真正解决我的问题。也许我不明白。我仍然不知道如何实现我的box组件。这并不能真正解决我的问题。也许我不明白。我仍然不知道如何实现我的box组件。