如何渲染局部视图?

时间:2015-11-10 19:26:46

标签: ruby-on-rails partial-views

我有以下内容:

  

/controllers/test_controller.rb

     

/views/test/index.html.erb

     

/views/test/_partial.html.erb

我想在索引视图中渲染部分。我这样做:

index.html.erb

<h1>Test#index</h1>
<%= render "_partial" %>

_partial.html.erb

<p>This is partial content</p>

当我转到localhost:3000 / test / index时,我收到此错误:

ActionView::MissingTemplate in Test#index
Missing partial /__partial with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
Extracted source (around line #2):

1 <h1>Test#index</h1>
2 <%= render "_partial" %>

知道我做错了吗?

3 个答案:

答案 0 :(得分:2)

这个问题已经得到解答,但是当partial与当前视图位于同一目录中时,您可以只渲染部分没有下划线。但是如果你想从另一个控制器中提取部分,你需要退一步并使用更完整的路径,比如"users/partial"

答案 1 :(得分:1)

所有取决于您的部分位置。如果您在布局文件夹中有部分_partial,则只需调用<%= render "partial" %>这样的部分。

Rails知道开头带有下划线的文件是不完整的。因此,当您渲染部分图像时,不必使用下划线。

请记住,Rails是配置之上的约定。

答案 2 :(得分:0)

您可以尝试

<% @users.each do |user| %>
        <%= render 'erb_partials/post', user: user %>
    <% end %>