2010-07-07 8 views
0

J'ai quelques commandes avec des articles imbriqués et les articles ont des types imbriqués. Quand je fais un form_for @order dans une vue, alors je voudrais cacher tous les éléments qui ont leur :registered attribut défini sur vraiExiste-t-il un moyen de masquer certains objets imbriqués dans le modèle?

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

ou

def register 
    @order = Order.find(params[:id]) 
    # Sort out the :registered == true 
end 

Répondre

2

Vous pouvez essayer quelque chose comme ceci:

<% 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 %> 

Ou vous pouvez créer une deuxième association pour les envois non:

class Order < ActiveRecord::Base 
    has_many :unregistered_itmes, :class_name => "Item", :conditions => { :registered => false } 
end 

Et vous pouvez faire quelque chose comme ceci:

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

qui donne une SyntaxError – Flexo

+0

désolé, mon mauvais .. cela a fonctionné – Flexo