我正在开发一个Rails应用程序(rails v5.1.1和ruby v2.3.4),当我尝试在我的一个路由中使用reform表单对象时出现错误({{1 }}):
/bookings/new
我正在使用virtus model(在其他情境中可以正常工作):
undefined method `persisted?' for #<Booking:0x007fbae9a98138>
这是我的表单对象:
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
我认为使用virtus模型而不是主动记录应该没有问题,因为改革将自己卖为<%= form_for @form do |form| %>
<%= form.text_field :client_email %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
。我有什么不对吗?
答案 0 :(得分:0)
似乎来自@fanta的评论有所帮助,但我的长期答案是你应该避免使用Virtus,特别是因为你正在建立一个新项目。 Virtus不再受到它自己的团队的支持,他们转向干式(干型和干式验证)
如果你需要模拟一个模型 - 你可以使用dry-struct,OpenStruct等
此外,改革现在完全支持干验证和干式,并且它将成为未来的方式(直到版本4,你将得到支持) 祝你好运:-)