# Una soluzione per visualizzare i campi di un modello solo in certe condizioni

**URL:** <https://www.ruby-forum.com/t/una-soluzione-per-visualizzare-i-campi-di-un-modello-solo-in-certe-condizioni/211288>\
**Category:** IT\
**Created:** [August 31, 2011, 7:07pm UTC](https://www.ruby-forum.com/t/una-soluzione-per-visualizzare-i-campi-di-un-modello-solo-in-certe-condizioni/211288 "2011-08-31T19:07:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [August 31, 2011, 7:07pm UTC](https://www.ruby-forum.com/t/una-soluzione-per-visualizzare-i-campi-di-un-modello-solo-in-certe-condizioni/211288/1 "2011-08-31T19:07:59Z")

</div>

Mi spiego meglio:

class Shop \< ActiveRecord::Base  
has\_many :documents, :dependent =\> :restrict  
has\_many :roles, :dependent =\> :restrict  
accepts\_nested\_attributes\_for :documents  
accepts\_nested\_attributes\_for :roles

il form e’ per la gestione di shop e’:

= simple\_form\_for(@shop) do |shop\_f|  
= render ‘shared/error\_messages’, :object =\> @shop  
= render :partial =\> ‘document\_fields\_form’, :locals =\> { :f =\>  
shop\_f } if @shop.new\_record? or @document  
= render :partial =\> ‘role\_fields\_form’, :locals =\> { :f =\> shop\_f }  
unless @shop.new\_record? or !@role  
= field\_set\_tag t(‘shop’) do  
.inputs  
= shop\_f.input :name  
…

Siccome vorrei gestire separatamente la modifica dei soli campi  
relativi a Shop, nell’index oltre al classico link “modifica” ne ho  
aggiunti altri due “documenti” e “ruoli”, con questi ultimi due  
vengono passati dei paramentri aggiuntivi in modo da riconoscere se si  
proviene da “modifica” oppure “documento” oppure “ruolo”.  
Lo shop\_controller e’:

def new  
@shop = Shop.new  
@document = @shop.documents.build  
new!  
end

In questo modo quando creo un nuovo Shop creo anche un nuovo Document  
relativo, poi…

def edit  
@shop = Shop.find(params[:id])  
@document = @shop.documents.build if params[:dlg114]  
@role = @shop.roles.build if params[:ruolo]  
edit!  
end

In questo modo viene controllata l’esistenza dei parametri citati e se  
esistono quando modifico i campi di Shop posso inserire un nuovo  
Document e un nuovo Role.  
Il render dei campi relativi a Documen e Role viene fatto al  
verificarsi di determinate condizioni come si puo’ vedere dal codice  
del form.  
Il mio problema e’ che cosi’ come ho fatto se al submit Document o  
Role non sono validi il render non viene effettuato cosi’ ho i  
messaggi di errore ma non vedo i campi di Documen o Role, questo  
perche’, nel caso di Document, shop non e’ new\_record e non esiste  
piu’ @document quando viene effettuata la validazione.  
So che il problema e’ stupido ma sono un po in palla, qualche  
suggerimento?
