在许多控制器的编辑方法中,您可以初始化一个新对象并编辑现有对象
class MagazinesController < ApplicationController def edit @magazine = Magazine.find(params[:magazine_id]) @page = Page.find(params[:id]) @new_page = @magazine.pages.new end end
但是,在一个视图中,您将经常想要循环遍历持久化的对象并分别处理新对象@H_403_5@
# magazines#edit %h4 Existing pages - @magazine.pages.each do |page| %p= link_to page,page.title
问题@H_403_5@
…是页面关联既包含了现有的(持久化的)页面,也包含了通过@new_page = @ magazine.pages.new创建的新页面.@H_403_5@
这很容易处理,但它是丑陋的@H_403_5@
%h4 Existing pages - @magazine.pages.each do |page| - if page.persisted? %p= link_to page,page.title
我想使用一些关联方法来仅选择那些持久化的页面:@H_403_5@
%h4 Existing pages - @magazine.pages.persisted.each do |page| %p= link_to page,page.title
有什么办法吗@H_403_5@