我最近遇到了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
是创建getter
和setter
方法的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,它只会进行验证。