我具有嵌套属性的以下形式。哪个工作正常。
但是我想将要点设为可选,这意味着如果将摘要字段保留为空白,则表单仍应提交并进行辩论,而无需创建要点。
我还有其他形式可以创建依赖于validates_presense_of:summary的点,所以我宁愿将该属性保留在那里。
是否有某种形式的rails form_for内置功能允许嵌套表单是可选的? (只有在他们填写字段的情况下,才是IE)
debate.rb
class Debate < ApplicationRecord
validates_presence_of :title
accepts_nested_attributes_for :points
has_many :points
end
point.rb
class Point < ApplicationRecord
validates_presence_of :summary
belongs_to :debate
end
_form.html.erb
<%= form_with(model: debate, local: true, class: "col-6") do |form| %>
<%= form.text_field :title %>
<%= form.fields_for :points do |point_form| %>
<%= point_form.text_area :summary %>
<% end %>
<%= form.submit class: "btn btn-primary" %>
<% end %>
答案 0 :(得分:0)
您可以尝试添加reject_if
选项:
accepts_nested_attributes_for :points, reject_if: proc { |attributes| attributes['summary'].blank? }
所以它不会建立新的积分记录。