如何在rails 5

时间:2019-05-12 05:53:48

标签: ruby-on-rails ruby-on-rails-5

我具有嵌套属性的以下形式。哪个工作正常。

但是我想将要点设为可选,这意味着如果将摘要字段保留为空白,则表单仍应提交并进行辩论,而无需创建要点。

我还有其他形式可以创建依赖于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 %>

1 个答案:

答案 0 :(得分:0)

您可以尝试添加reject_if选项:

accepts_nested_attributes_for :points, reject_if: proc { |attributes| attributes['summary'].blank? }

所以它不会建立新的积分记录。