Ruby on Rails 3:播放视图

时间:2011-08-21 04:31:12

标签: ruby views

我很抱歉我的英语不好。我只是想描述一下我的问题。 :) 我有一个应用程序布局,在主体中显示帖子的收益。我有另一个收益: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 %>

我希望我的问题很容易理解.. :)

2 个答案:

答案 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