对于使用f.text_field创建的字段,不使用field_with_errors包装css div,但适用于f.input

时间:2012-06-25 11:51:57

标签: css ruby-on-rails-3 views simple-form zurb-foundation

我的观点有问题。我在样式表中使用zurb基础,当我在表单中输入错误的输入时,我得到表单上方的错误,但包含错误的字段没有用红色包裹。进一步研究这一点,输入字段没有field_with_errors div包装器。在进一步研究之后,我发现如果使用f.input而不是f.text_field,我会得到正确的错误包装。

因为zurb有text_field,text_area等样式。我正在使用那些但我没有从rails得到错误div。对此有什么好的解决方案吗?

这里我得到了正确的Zurb基础样式但没有field_with_errors div:

.field
  = f.label :name
  = f.text_field :name, :class => "input-text"

这里我没有得到Zurb的样式,但元素用field_with_errors div包裹:

.field
  = f.label :name
  = f.input :name, :class => "input-text"

基本上,似乎f.text_field助手以某种方式绕过提供div类以显示错误的Rails视图机制。

2 个答案:

答案 0 :(得分:1)

f.text_field是Rails表单助手,而不是simple_form的助手(因为你用简单形式标记了这个,我假设你正在使用它)。由于简单形式仅包含其自身属性的错误,因此它忽略了rails形式的辅助属性。

你可能想要的是

= f.input :name, :as => :string

您也不需要自己的带有simple_form的标签,因此我们可以将f.labelf.text_field压缩为:

= f.input :name, :as => :string, :label => "Custom label"

如果您不使用:label属性,它将默认为符号的名称,在这种情况下,您的标签将为“名称”。使用:label属性为您提供标题为“自定义标签”的标签。

希望有所帮助。

答案 1 :(得分:0)

如果你想将class传递给SimpleForm的输入,你应该使用

= f.input :name, :input_html => { :class => 'input-text' }