ich derzeit eine Rails-Anwendung (Schienen v5.1.1 und Rubin v2.3.4) und ich bin immer einen Fehler bin entwickeln, wenn ein reform Form Objekt bei einem meiner Wege zu nutzen versuchen (/bookings/new
):undefinierte Methode `beibehalten? ' mit Reform und Virtus Modell
undefined method `persisted?' for #<Booking:0x007fbae9a98138>
ich verwende ein virtus model (die auf anderen Kontexten funktioniert gut):
class Booking
include Virtus.model
attribute :id, Integer
attribute :client_email, String
end
Das ist meine Form Objekt:
Dies ist die new
Aktion auf mein Controller:
def new
@form = BookingForm.new(Booking.new)
end
Das ist meine Form Teil:
<%= form_for @form do |form| %>
<%= form.text_field :client_email %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
ich anstelle eines aktiven Datensatz ein virtus Modell gedacht Mithilfe kein Problem sein sollte, da Reform verkauft sich als Form objects decoupled from your models
. Habe ich etwas falsch gemacht?
Sie könnten einfach "def persisted?" in Ihrer "Booking" -Klasse definieren und die Logik verwenden, die Sie dort haben möchten. Sie könnten einfach "false" zurückgeben, wenn die Klasse nur neue Objekte darstellt. – fanta
Dies scheint nicht der richtige Ansatz zu sein, da ich auch eine 'to_key'-Methode in meinem Booking-Modell implementieren müsste (um die Elemente des Formulars zurückzugeben). Danach bekomme ich den Fehler: 'undefinierte Methode' input 'für # '(in der Zeile meiner Eingabe). –
gibt es viele Dinge, die Sie verwenden können, zum Beispiel 'ActiveModel :: Conversion' (http://api.rubyonrails.org/classes/ActiveModel/Conversion.html) gibt Ihnen die' persisted? 'Methode plus einige andere. Sie können auch 'ActiveModel :: Naming' (http://api.rubyonrails.org/classes/ActiveModel/Naming.html) verwenden, falls Sie es benötigen. – fanta