2012-08-08 8 views

Odpowiedz

12

jeśli obiekt przeszedł do formularza jest persisted?, budowniczy forma wie, że jesteś aktualizowanie obiektu i spowoduje wyświetlenie akcji PUT. Jeśli nie jest trwały, to wie, że tworzysz nowy obiekt i będzie używał POST.

<%= form_for @user do |f| %> 
    <%= f.button %> 
<% end %> 

Jeśli @user to nowy rekord, POST służy przycisk i etykieta staje Create User, inaczej PUT służy i etykieta staje Update User. Nie ma o wiele więcej.

+0

Dzięki. Skończyło się na użyciu created_at, ponieważ uzyskiwałem dostęp do mojego modelu z jsonem po stronie klienta, a @model został ujawniony jako skrót od gon. Pozostały mi tylko właściwości do pracy. – Undistraction

3

Formularze edytowania istniejących zasobów używają PUT, formularzy tworzących nowe wykorzystanie zasobów POST. Zgodnie ze standardami REST opisanymi jako here.

z szyn kodowych form_for pomocnik:

action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post] 

i persisted? dla ActiveRecord jest zadeklarowana jako:

!(new_record? || destroyed?) 
+0

Moje pytanie brzmiało, w jaki sposób Rails decyduje, którą metodę ustawić w formularzu. Do czego służy decyzja? – Undistraction

+0

Zaktualizowany, czy to tego chciałeś? – PinnyM

+0

Dzięki. Afraid @hgmnz pobił cię jednak do uderzenia. – Undistraction

Powiązane problemy