我有可變@posts_by_month
在兩個控制器定義並在兩個視圖中所使用的實例之間共享代碼:如何兩個控制器
Posts控制器:
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>
的毫秒部分變成一個導致歸檔視圖的鏈接?
注意:在我的應用程序中毫秒將被替換爲月份,如在歸檔視圖中。
你有沒有參考它說控制器狀態被複制到產生視圖狀態的地方?我寧願認爲(並希望)通過視圖中的代理訪問控制器狀態,並且不會進行不必要的複製(除非明確指出,例如通過替換爲模板等) – Domi