我@posts_by_month
在两个控制器中定义了一个实例变量,并在两个视图中使用:
帖子控制器:
class PostsController < ApplicationController
def index
@posts = Post.all
@posts_by_month = Post.all.group_by { |post| post.created_at.strftime("%L") }
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
.
.
end
档案控制器:
class ArchivesController < ApplicationController
def index
@posts_by_month = Post.all.group_by { |post| post.created_at.strftime("%B") }
end
end
帖子索引视图:
<h1>Listing posts</h1>
.
.
.
<div>
<% @posts_by_month.each do |millisecond, posts| %>
<p><%= millisecond %>milliseconds <%= posts.count %></p>
<% end %>
</div>
档案索引视图:
<% @posts_by_month.each do |monthname, posts| %>
<%= monthname %>
<ul>
<% posts.each do |post| %>
<h3><%= post.title %></h3>
<p><%= post.body %></p>
<% end %>
</ul>
<% end %>
我有两个问题。有什么方法可以定义@posts_by_month
实例变量,以便我可以让它对两个视图都可用,而无需在每个相应的控制器中重复它?
其次,有没有什么办法可以将毫秒部分<p><%= millisecond %>milliseconds <%= posts.count %></p>
做成一个链接,指向存档视图?
注意:在我的应用程序中,毫秒将被替换为月份,就像在存档视图中一样。