@posts_by_month
2 つのコントローラーで定義されたインスタンス変数があり、2 つのビューで使用されます。
投稿コントローラー:
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 %>
2 つの質問があります。インスタンス変数を定義して@posts_by_month
、それぞれのコントローラーで繰り返すことなく両方のビューで使用できるようにする方法はありますか?
第二に、ミリ秒の部分を<p><%= millisecond %>milliseconds <%= posts.count %></p>
アーカイブ ビューにつながるリンクにする方法はありますか?
注: 私のアプリでは、ミリ秒はアーカイブ ビューのように月に置き換えられます。