2014-11-08 13 views
5

Mam formę szyn, która renderuje częściowe z listą pól, aby utworzyć nowego użytkownika. Te pola używam również do renderowania formularza edycji. Zastanawiam się, czy możliwe jest nie pokazywanie konkretnego pola (tj. Działu) w formularzu edycji, ponieważ nie chcę dać użytkownikom opcji zmiany działu?Nie wyświetlaj pola formularza, jeśli akcja jest edytowana

Odpowiedz

1

Jeśli params [: action] jest edit potem nie pokazują, że pole może być za pomocą wyświetlacza żaden

+0

próbowałem go, ale potem nie pole jest pokazane w obu sprawach, nowy i edytować :( –

+0

ale w przypadku nowej .. działanie będzie nowy i edytować to pole powinno być pokazane. użyj, jeśli inaczej warunek pokaż pole w przypadku nowej akcji, czy ukryj to –

1

można to zrobić na wiele sposobów.

zwykle zrobić to jak

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

To nie działa, chociaż nie dostaję części new_record? mieć w moim userController metodę dla new_record? czy jest to jakaś wbudowana metoda szyn? –

+0

wbudowany, '@ user' jest obiektem AR – Nithin

2

Wystarczy umieścić na formularzu:

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

Można użyć trwało? metody, aby upewnić się, że nie jest to nowy rekord, który zostanie wstawiony lub nawet użyć new_record? metoda, która zwróci wartość true, jeśli rekord nie jest zachowany w bazie danych "Nowy rekord". ex ::

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

jeszcze jeden sposób to sprawdzić o działaniu samego co daje także kontrolować na kontrolerze jeśli renderowanie częściowe z innego widoku i chcesz ograniczyć je do konkretnego kontrolera, są one przechowywane w ::

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 
Powiązane problemy