我一直在尝试使用Rails中的自定义表单构建器方法。我的目标与formtastic的f.inputs
方法类似。到目前为止,这是我的代码:
class Builder < ActionView::Helpers::FormBuilder
def fieldset(name)
@template.content_tag :fieldset, :class => 'inputs' do
@template.content_tag :div, :class => 'legend' do
@template.content_tag :span, name
end
@template.content_tag :ol do
yield
end
end
end
def input_field(name, classes='', *args)
@template.content_tag :li, class: "input #{classes}" do
label(name) + text_field(name)
end
end
end
那么我可以在HAML中构建表单,如下所示:
= f.fieldset "General Info" do
= f.input_field :name
= f.input_field :slug, 'last'
问题是呈现的HTML会删除图例DIV。
<fieldset class="inputs">
<ol>
<li class="input ">
<label for="content_instance_name">Name</label>
<input id="content_instance_name" name="content_instance[name]" size="30" type="text" value="Home Page">
</li>
<li class="input last">
<label for="content_instance_slug">Slug</label>
<input id="content_instance_slug" name="content_instance[slug]" size="30" type="text" value="home-page">
</li>
</ol>
</fieldset>
好像我错过了一些东西 提前谢谢。
解
以下是调整后的字段集方法:
def fieldset(name)
@template.content_tag :fieldset, :class => 'inputs' do
legend = @template.content_tag :div, @template.content_tag(:span, name), :class => "legend"
legend += @template.content_tag :ol do
yield
end
end
end