【问题标题】:Not wrapping css div with field_with_errors for fields created with f.text_field but works for f.input对于使用 f.text_field 创建但适用于 f.input 的字段,不使用 field_with_errors 包装 css div
【发布时间】:2013-07-11 03:37:41
【问题描述】:

我的观点有问题。我在样式表中使用了 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 视图机制。

【问题讨论】:

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


    【解决方案1】:

    f.text_field 是 Rails 表单助手,而不是 simple_form 的助手(因为你用 simple-form 标记了它,我假设你正在使用它)。由于简单表单只用错误包装自己的属性,因此它忽略了rails表单辅助属性。

    你可能想要的是

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

    你也不需要自己的simple_form标签,所以我们可以将f.labelf.text_field压缩成:

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

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

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-21
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 2023-04-10
        相关资源
        最近更新 更多