2014-11-08 11 views
5

Ho un modulo di barre che esegue il rendering parziale con l'elenco dei campi per creare un nuovo utente. Quei campi che sto usando anche per rendere il modulo di modifica. Mi chiedo se sia possibile non mostrare un campo specifico (cioè il reparto) sul modulo di modifica, perché non voglio dare agli utenti l'opzione di cambiare reparto?Non visualizzare il campo del modulo se l'azione è stata modificata

risposta

1

Se params [: azione] è modificare quindi non dimostrano che campo potrebbe essere utilizzando visualizzazione nessuno

+0

ho provato, ma il campo non è poi mostrato in entrambe le azioni, nuovo e modificare :( –

+0

ma in caso di nuova .. azione sarà nuovo e non modificare quindi campo dovrebbe essere mostrato. usa if else condition mostra field in caso di nuova azione else hide –

1

Può essere fatto in molti modi.

Io di solito faccio come

if [email protected]_record? 
# department field. 
end 
+0

Non funziona, anche se non ottengo la parte new_record? dovrei hai un metodo nel mio userController per new_record? o è un metodo di rotaie incorporato? –

+0

integrato, '@ utente' è un oggetto AR – Nithin

2

Basta mettere a vostra forma:

<%= f.text_field :department unless @user.new_record? %> 
9

È possibile utilizzare persisteva? Metodo per garantire che non sia un nuovo record che verrà inserito o che utilizzi anche new_record? Metodo che restituirà true se il record non è persistente nel database "Nuovo record". ex ::

<%= f.text_field :department if @user.persisted? %> 
or 
<%= f.text_field :department unless @user.new_record? %> 

un altro modo è quello di controllare circa l'azione in sé, che dà anche controllare sul controller, se si esegue il rendering parziale dal punto di vista diverso e si vuole limitare a controllo specifici, questi sono memorizzati in ::

params[:controller] -->> contains the name of the controller ex. UserController that you just hit on 
params[:action] -->> contains the action name ex. new or edit 
Problemi correlati