In the edit method of many controllers you initialize a new object and edit existing objects
class MagazinesController < ApplicationController
def edit
@magazine = Magazine.find(params[:magazine_id])
@page = Page.find(params[:id])
@new_page = @magazine.pages.new
end
end
However in a view you will often want to cycle through the persisted objects and treat the new object separately
# magazines#edit
%h4 Existing pages
- @magazine.pages.each do |page|
%p= link_to page, page.title
The problem
...is that the pages
association contains both existing (persisted) pages but also the new page which we made via @new_page = @magazine.pages.new
.
It's easy to deal with this however it's ugly
%h4 Existing pages
- @magazine.pages.each do |page|
- if page.persisted?
%p= link_to page, page.title
I would like to use some assocition method to select only those pages which are persisted:
%h4 Existing pages
- @magazine.pages.persisted.each do |page|
%p= link_to page, page.title
Is there any way of doing this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…