Rails 5简单表单不显示错误

时间:2017-08-03 20:45:54

标签: ruby-on-rails validation ruby-on-rails-5 simple-form

我可以通过

获取Simple表单以显示错误的唯一方法
  <% errors = f.object.errors.messages.collect { |k,v| "#{k}: #{v}" if v.length > 0 }.join("\n")%>
  <%= f.error_notification message: "Errors: #{errors}" %>

这似乎太复杂了。

情境:

用户表和social_profile链接(facebook,twitter等)的嵌套多态表。

如果用户在创建新帐户时未填写任何嵌套表单,则配置文件输入/参数为空字符串,并且保存正常。

但是,如果用户删除所有配置文件链接的输入字段,则不会创建与social_profile表的关联。因此,如果用户稍后尝试编辑他的帐户,则不会显示嵌套的social_profile表单。

validates :social_profile, presence: true, associated: true添加到用户模型可防止发生此错误,但不会显示给用户发生的情况。我能想出的最好的是原始代码,但似乎应该有更好的方法。

1 个答案:

答案 0 :(得分:2)

@Brad Werth将我联系到this SO post,这帮助我构建了以下答案:

<%= f.object.errors.full_messages.join(", ") if f.object.errors.any? %>

从表单中抓取错误&#39; ed对象,获取&#34; full_messages&#34; (即&#34;描述不能为空白&#34;)并将它们与逗号连接在一起。