我目前正在開發的Rails應用(導軌V5.1.1和紅寶石v2.3.4),我試圖讓我的路線之一使用reform表單對象時(/bookings/new
錯誤):未定義的方法`堅持?'以改革了Virtus模型
undefined method `persisted?' for #<Booking:0x007fbae9a98138>
我使用的是virtus model(這在其他環境中正常工作):
class Booking
include Virtus.model
attribute :id, Integer
attribute :client_email, String
end
這是我的表單對象:
class BookingForm < Reform::Form
property :client_email
end
這是我的控制器上的new
行動:
def new
@form = BookingForm.new(Booking.new)
end
這是我的形式部分:
<%= form_for @form do |form| %>
<%= form.text_field :client_email %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我想用一個VIRTUS模型,而不是一個有效記錄的一個應該是因爲沒有問題改革銷售自己爲Form objects decoupled from your models
。我有什麼不對嗎?
你可以在你的'Booking'類中定義'def persisted?',並在那裏使用任何你想要的邏輯,如果這個類只代表新的對象,你可以返回'false'。 – fanta
這似乎不是正確的方法,因爲我還需要在我的預訂模型中實現'to_key'方法(返回表單的元素)。之後,我得到錯誤:''(在我的輸入行)'未定義的方法'輸入'。 –
有很多事情可以使用,例如'ActiveModel :: Conversion'(http://api.rubyonrails.org/classes/ActiveModel/Conversion.html)給你'persisted?'方法加上其他一些東西。如果您需要,也可以使用「ActiveModel :: Naming」(http://api.rubyonrails.org/classes/ActiveModel/Naming.html)。 – fanta