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

时间:2014-05-29 06:23:36

标签: ruby-on-rails forms twitter-bootstrap simple-form

我最近遇到simple_form,其中显示了必填字段的验证错误消息working example

用法:

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

在上面的用法中,它仅适用于用户表单字段(即表中存在字段),在我的rails应用程序中,用户表单将生成年份字段作为下拉列表并使用select_tag进行渲染,是否可以显示简单的表单错误其他比形式元素?我想使用simple_form显示select_tag的错误我如何实现它

2 个答案:

答案 0 :(得分:2)

Sirius ROR是对的 - 但我觉得您需要更多有关他们如何工作的信息:


<强> Virtual Attributes

您需要一个虚拟属性,使用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

这为Userbirth_year个对象提供@user.birth_year属性,例如simple_form


<强>错误

如果您想渲染错误,您需要考虑以下几点:

首先,我认为<div class="field_with_errors"> <input type="..." > </div> 会自动呈现您的错误(虽然不确定):

  

这将生成一个包含用户名和标签的整个表单   密码也是如此,并且在渲染时默认情况下渲染错误   包含无效数据的表单(例如提交后)。

其次,如果您想通过各自的字段呈现错误,则需要注意Rails会自动将错误的字段包装在:

{{1}}

这意味着如果您想在发生错误时设置此字段的样式,则必须使用CSS来执行此操作。

答案 1 :(得分:1)

您可以通过在模型中定义attr_accessor :birth_year来执行此操作,但不会将值保存到数据库中,它只会进行验证。