从另一个控制器渲染一个动作的模板
Rendering an Action's Template from Another Controller
我正在开发一个项目,该项目在以下设计论坛上有帖子和评论。我正在阅读 ruby 指南 http://guides.rubyonrails.org/layouts_and_rendering.html#overview-how-the-pieces-fit-together,它说要从另一个动作中呈现一个动作模板,我需要使用类似这样的东西 render "posts/index"
。
我正在尝试打印该论坛中某个论坛的所有帖子。我已经设置了数据库和模型,但不确定如何处理控制器。
如何在 forums/show/i 中调用 posts/index(其中 i 是论坛的 ID)。
如何打印论坛中的帖子以及如何只打印与该特定论坛相关的帖子?
当我尝试在论坛控制器的 index 函数中调用 render "posts/index" 时,我收到此错误消息:
ActionView::MissingTemplate in Forums#show
Showing /home/ubuntu/workspace/app/views/forums/show.html.erb where line #26 raised:
Missing partial posts/_index with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/home/ubuntu/workspace/app/views"
* "/usr/local/rvm/gems/ruby-2.3.4/gems/devise-4.3.0/app/views"
<%= render 'posts/index' %>
以上用红色高亮显示
感谢您的宝贵时间。
既然你有相互关联的模型,我会这样做。在您的论坛显示视图中:
<%= render partial: 'posts/index', locals: {forum: @forum} %>
然后创建局部视图 posts/_index。html.erb:
<% forum.posts.each do |post| %>
<div><%= post.your_attributes %></div>
<div><%= render partial: 'comments/index', locals: {forum: forum, post: post} %>
<% end %>
最终创建局部视图comments/_index。html.erb:
<% post.comments.each do |comment| %>
<div><%= comment.your_attributes %><div>
<% end %>
locals 选项将这些变量传递给您的局部变量以便在那里可用。
我正在开发一个项目,该项目在以下设计论坛上有帖子和评论。我正在阅读 ruby 指南 http://guides.rubyonrails.org/layouts_and_rendering.html#overview-how-the-pieces-fit-together,它说要从另一个动作中呈现一个动作模板,我需要使用类似这样的东西 render "posts/index"
。
我正在尝试打印该论坛中某个论坛的所有帖子。我已经设置了数据库和模型,但不确定如何处理控制器。
如何在 forums/show/i 中调用 posts/index(其中 i 是论坛的 ID)。
如何打印论坛中的帖子以及如何只打印与该特定论坛相关的帖子?
当我尝试在论坛控制器的 index 函数中调用 render "posts/index" 时,我收到此错误消息:
ActionView::MissingTemplate in Forums#show
Showing /home/ubuntu/workspace/app/views/forums/show.html.erb where line #26 raised:
Missing partial posts/_index with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/home/ubuntu/workspace/app/views"
* "/usr/local/rvm/gems/ruby-2.3.4/gems/devise-4.3.0/app/views"
<%= render 'posts/index' %>
以上用红色高亮显示
感谢您的宝贵时间。
既然你有相互关联的模型,我会这样做。在您的论坛显示视图中:
<%= render partial: 'posts/index', locals: {forum: @forum} %>
然后创建局部视图 posts/_index。html.erb:
<% forum.posts.each do |post| %>
<div><%= post.your_attributes %></div>
<div><%= render partial: 'comments/index', locals: {forum: forum, post: post} %>
<% end %>
最终创建局部视图comments/_index。html.erb:
<% post.comments.each do |comment| %>
<div><%= comment.your_attributes %><div>
<% end %>
locals 选项将这些变量传递给您的局部变量以便在那里可用。