Ruby on rails 有没有办法隐藏模型中的一些嵌套对象?

Ruby on rails 有没有办法隐藏模型中的一些嵌套对象?,ruby-on-rails,forms,nested,Ruby On Rails,Forms,Nested,我有一些带有嵌套项目的订单,这些项目有嵌套类型。当我在视图中为@order执行表单时,我想隐藏其:registed属性设置为true <% form_for @order do |f| %> <% f.fields_for :items do |ff| %> <%# show all the items that have :registered == false %> <% end %> <% end %> 您可以尝

我有一些带有嵌套项目的订单,这些项目有嵌套类型。当我在视图中为@order执行
表单时,我想隐藏其
:registed
属性设置为true

<% form_for @order do |f| %>
  <% f.fields_for :items do |ff| %>
    <%# show all the items that have :registered == false %>
  <% end %>
<% end %>

您可以尝试以下方法:

<% form_for @order do |f| %>
  <% f.fields_for :items do |ff| %>
    <% next if ff.object.registered %>
    <%# show all the items that have :registered == false %>
  <% end %>
<% end %>
<% form_for @order do |f| %>
  <% f.fields_for :unregistered_items do |ff| %>
    <%# show all the items that have :registered == false %>
  <% end %>
<% end %>

或者,您可以为未注册的项目创建第二个关联:

class Order < ActiveRecord::Base
  has_many :unregistered_itmes, :class_name => "Item", :conditions => { :registered => false } 
end
类顺序“Item”,:conditions=>{:registered=>false}
结束
然后你可以这样做:

<% form_for @order do |f| %>
  <% f.fields_for :items do |ff| %>
    <% next if ff.object.registered %>
    <%# show all the items that have :registered == false %>
  <% end %>
<% end %>
<% form_for @order do |f| %>
  <% f.fields_for :unregistered_items do |ff| %>
    <%# show all the items that have :registered == false %>
  <% end %>
<% end %>