【发布时间】:2013-11-07 17:34:47
【问题描述】:
在许多控制器的编辑方法中,您初始化一个新对象并编辑现有对象
class MagazinesController < ApplicationController
def edit
@magazine = Magazine.find(params[:magazine_id])
@page = Page.find(params[:id])
@new_page = @magazine.pages.new
end
end
但是在视图中,您通常会希望循环遍历持久对象并单独处理新对象
# magazines#edit
%h4 Existing pages
- @magazine.pages.each do |page|
%p= link_to page, page.title
问题
...pages 关联既包含现有(持久)页面,也包含我们通过 @new_page = @magazine.pages.new 创建的新页面。
这很容易处理,但它很丑
%h4 Existing pages
- @magazine.pages.each do |page|
- if page.persisted?
%p= link_to page, page.title
我想使用一些关联方法来只选择那些被持久化的页面:
%h4 Existing pages
- @magazine.pages.persisted.each do |page|
%p= link_to page, page.title
有什么办法吗?
【问题讨论】:
-
你试过
@magazine.pages.select(&:persisted?)
标签: ruby-on-rails activerecord