希望这里只有一个简单的问题,但是我似乎找不到答案。刚开始使用RoR,之前是用ASP MVC。我遇到的问题是渲染局部视图时,局部视图的本地变量不一定与主视图的变量相关。例如,在博客中,我尝试渲染侧边栏,以链接到存档。
def sidebar
@blog_posts = Blog.all(:select => "created_at")
@post_months = @blog_posts.group_by { |m| m.created_at.beginning_of_month }
end
局部视图 _sidebar 如下:
<div class="archives">
<h4>Blog Archive</h4>
<% @post_months.sort.reverse.each do |month, posts| %>
<%= link_to "#{h month.strftime("%B %Y")}: #{posts.count}", archive_path(:timeframe => month) %>
<% end %>
</div>
我遇到的问题是,如果我在主视图中简单地进行render 'sidebar'操作,该操作似乎并没有被调用,@post_months始终为nil。是否可以直接从视图中调用该操作,并简单地进行render 'sidebar'操作?在ASP MVC中,我曾经将侧边栏设为ChildActionOnly,并从主视图中进行Render.Action操作,但在RoR中,我完全不知道该怎么做。任何帮助都将不胜感激!