是否可以对表中不存在的字段使用简单表单?



我最近遇到了simple_form,它显示了必需字段的验证错误消息,工作示例

用法:

<%= simple_form_for @user do |f| %>
  <%= f.input :username %>
  <%= f.input :password %>
  <%= f.button :submit %>
<% end %>

在上面的用法它只适用于用户表单字段(即字段存在于表中),在我的rails应用程序用户表单有出生年份字段下拉并使用select_tag呈现,是否有可能显示表单元素以外的简单表单错误?我想使用simple_form显示select_tag的错误,我如何实现它

Sirius ROR是正确的-但我觉得你需要更多的信息,他们需要如何工作:


虚拟属性

您需要一个虚拟属性,这是使用attr_accessor

完成的

attr_accessor是创建gettersetter方法的ruby方法。这基本上意味着你可以创建一系列virtual attributes用于models

虚拟属性是你声明的方法(attributes),它不需要出现在你的数据库中。要回答关于birth year的问题,您需要这样做:

#app/models/user.rb
Class User < ActiveRecord::Base
   attr_accessor :birth_year
end

这给任何User对象birth_year属性,就像下面的@user.birth_year


如果你正在寻找渲染错误,有几件事你需要考虑:

首先,我认为simple_form自动呈现您的错误(虽然不确定):

这将生成一个包含用户名和标签的完整表单,并在默认情况下呈现错误无效数据的表单(例如提交后)。

其次,如果您想通过各自的字段呈现错误,您需要知道Rails会自动将错误字段包装在:
<div class="field_with_errors">
    <input type="..." >
</div>

这意味着如果你想在错误发生时为这个字段设置样式,你必须使用CSS来完成。

您可以通过在模型中定义attr_accessor :birth_year来做到这一点,但它不会将值保存到DB,它只会进行验证。

相关内容