将所有属性默认为simple_form中的包装器html?

时间:2013-04-19 18:02:02

标签: ruby-on-rails simple-form

由于DOM子项始终可以通过父项访问,因此我希望始终将:class:data应用于包装器。例如,

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

应该产生与

相同的输出
<%= f.input :name, :wrapper_html => { :class => :half } %>

我希望在simple_form.rb中更改此内容,例如:

config.item_wrapper_class = :class

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

2 个答案:

答案 0 :(得分: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' }

答案 1 :(得分:0)

您需要编写自己的表单构建器才能执行此操作,并且根据您所描述的内容,您希望行为与simple_form明显不同,我不确定在所有情况下使用simple_form是否合理可能只想滚动你自己的表单生成器堆栈。

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

那说一个好的解决方法可能是,如果您关心的是如何在没有如此多的哈希嵌套的情况下将类和数据属性放在包装器上,您可以省略简单形式的包装器并直接提供您自己的包装元素。我认为如果你要在每个人上放课等,那就更清洁了。例如,使用haml:

.input.quarter{:data => { :foo => :bar }}
  = f.input :foo, :wrapper => false
相关问题