我很抱歉我的英语不好。我只是想描述一下我的问题。 :) 我有一个应用程序布局,在主体中显示帖子的收益。我有另一个收益:footerpost3显示页脚上最近帖子的标题。
当我在localhost:3000时,yield:footerpost3正确显示最近的标题。但当我点击一个帖子链接,这是url是localhost:3000 / posts / 3,yield:footerpost3什么也没显示。
这是我的代码: 应用程序/视图/布局/ application.html.erb
<!-- begin footer comment widget -->
<div class="footer_list widget_recent_comments">
<div class="title"><h5>Artikel Terkini</h5></div>
<%= yield :footerpost3 %>
</div>
<!-- end footer comment widget -->
应用程序/视图/存储/ index.html.erb
<% content_for :footerpost3 do %>
<% @postsMain.each do |dopostAll| %>
<div class="entry">
<ul>
<li class="recentcomments"><%= link_to dopostAll.title, dopostAll %></li>
</ul>
</div>
<% end %>
<% end %>
我希望我的问题很容易理解.. :)
答案 0 :(得分:0)
答案就在你的问题中。您正在该块中定义“content for”footerpost3,它存在于index.html.erb
中。当您/posts/3
时,index.html.erb
未呈现,而是show.html.erb
。{/ p>
要解决此问题,您还需要在show.html.erb
模板中添加内容。
您可以通过多种方式解决此问题。使用嵌套布局将是一个。例如,您可以在app/views/layout/posts.html.erb
创建帖子布局,如下所示:
<% content_for :footerpost3 do %>
<% @postsMain.each do |dopostAll| %>
<div class="entry">
<ul>
<li class="recentcomments"><%= link_to dopostAll.title, dopostAll %></li>
</ul>
</div>
<% end %>
<% end %>
<%= render :file => 'layouts/application' %>
通过这种方式,PostsController的所有视图都将使用此布局,只需添加页脚内容,然后呈现application_layout。
答案 1 :(得分:0)
您的根网址似乎是stores#index
。
您必须在@postsMain
操作中初始化stores#index
并在footerpost3
中生成content_for stores/index.html.erb
。
点击帖子后,您将转到posts#show page
。因此,您必须在@postsMain
操作中初始化posts#show
并生成footerpost3
的内容,即使在posts/show.html.erb