如何渲染局部视图?
How to render partial view?
我有以下内容:
/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" %>
知道我做错了什么吗?
这个问题已经回答过了,但是当局部和你当前的视图在同一个目录时,你可以只渲染不带下划线的局部。但是,如果您想从另一个控制器中提取部分内容,则需要退后一步并使用更完整的路径,例如 "users/partial"
.
一切都取决于你的部分在哪里。如果您在布局文件夹中有部分_partial
,您只需像这样调用部分<%= render "partial" %>
。
Rails 知道开头带下划线的文件是partial。所以,当你渲染部分时,你不必使用下划线。
请记住,Rails 约定优于配置。
你可以试试这个
<% @users.each do |user| %>
<%= render 'erb_partials/post', user: user %>
<% end %>
我有以下内容:
/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" %>
知道我做错了什么吗?
这个问题已经回答过了,但是当局部和你当前的视图在同一个目录时,你可以只渲染不带下划线的局部。但是,如果您想从另一个控制器中提取部分内容,则需要退后一步并使用更完整的路径,例如 "users/partial"
.
一切都取决于你的部分在哪里。如果您在布局文件夹中有部分_partial
,您只需像这样调用部分<%= render "partial" %>
。
Rails 知道开头带下划线的文件是partial。所以,当你渲染部分时,你不必使用下划线。
请记住,Rails 约定优于配置。
你可以试试这个
<% @users.each do |user| %>
<%= render 'erb_partials/post', user: user %>
<% end %>