0

因为 DOM 子级始终可以通过其父级访问,所以我希望始终应用:class:data应用于包装器。例如,

<%= f.input :name, :class => :half %>

应该产生与

<%= f.input :name, :wrapper_html => { :class => :half } %>

我希望在 simple_form.rb 中更改它,例如:

config.item_wrapper_class = :class

但没有运气。是通过自定义构建器实现这一目标的唯一方法吗?如果是这样,我将如何在自定义构建器中实现这一点?

4

2 回答 2

0

您需要编写自己的表单构建器来执行此操作,并且根据您的描述,您希望行为与 simple_form 足够不同,我不确定使用 simple_form 是否有意义 - 您可能只是想要滚动您自己的表单构建器堆栈。

您必须查找如何滚动您自己的表单构建器,我没有这样做。

也就是说,一个好的解决方法可能是,如果您关心的只是如何将类和数据属性放在包装器上而没有太多的哈希嵌套,您可以从简单的表单中省略包装器并直接提供您自己的包装元素。我认为如果您要在每个课程上放置课程等,那会更干净。例如,使用haml:

.input.quarter{:data => { :foo => :bar }}
  = f.input :foo, :wrapper => false
于 2013-04-23T15:14:31.970 回答
0

您可以使用这样的标签包装输入:

## Inputs
b.use :label
b.wrapper :default, :tag => 'div', :class => 'controls' do |ba|
  ba.use :input
  ba.use :error, :wrap_with => { :tag => 'span', :class => 'label label-important' }
  ba.use :hint,  :wrap_with => { :tag => 'p', :class => 'help-block' }
于 2013-04-19T19:05:28.090 回答