1

我正在尝试通过将相关属性放入 form.inputs 块中,将它们分组到“双域”中:

<%= semantic_form_for MyModel.new do |f| %>
    <%= f.inputs 'Advanced' do %>
        <%= f.input :name %>
        <%= f.inputs 'Min/Max', class: 'doublefield' do %>
          <%= f.input :min %>
          <%= f.input :max %>
        <% end %>
        <%= f.inputs 'Zip/Place', class: 'doublefield' do %>
          <%= f.input :zip %>
          <%= f.input :place %>
        <% end %>
    <% end %> 
<% end %>

但是,这会产生这样的标记(省略不相关的标记):

<form accept-charset="UTF-8" action="my_model" class="formtastic" id="new_my_model" method="post" novalidate="novalidate">  
    <fieldset class="inputs">
        <ol>
                <li class="string input optional stringish" id="my_model_name_input">
                    ...
                </li>
                <li class="input">
                    <fieldset class="doublefield">
                        ...
                    </fieldset>
                </li>
                <fieldset class="doublefield">
                    ...
                </fieldset>
        </ol>
    </fieldset>
</form>

只有字段集中的第一个嵌套字段集被<li>标签包围,其他的只是渲染为<fieldset>导致无效标记(因为不允许<fieldset>直接子级)。<ol>这不仅丑陋,而且很难将样式应用于表单。

在我的研究中,我偶然发现了一些关于这个问题的评论,其中指出这可能是 formtastic 本身的问题,但到目前为止我还没有找到解决方法或建议。

有任何想法吗?

版本信息:

  • 导轨(3.2.0.beta bd4bd3f)
  • 形式化(2.0.0.rc4 7d3bb2f)
  • ruby 1.9.2p290(2011-07-09 修订版 32553)[x86_64-linux]

完整标记:

<form accept-charset="UTF-8" action="my_model" class="formtastic" id="new_my_model" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓">
    <input name="authenticity_token" type="hidden" value="zPm0lLyT6MM4M+LI1b7c9d7NqGQM2PiT+kHsjUnfTWM="></div>
    <fieldset class="inputs">
        <legend><span>Advanced</span></legend>
            <ol>
                <li class="string input optional stringish" id="my_model_name_input">
                    <label class=" label" for="my_model_name">Name</label>
                    <input id="my_model_name" maxlength="255" name="my_model[name]" type="text">
            </li>
                <li class="input">
                    <fieldset class="doublefield">
                        <legend><span>Min/Max</span></legend>
                    <ol>
                        <li class="number input optional stringish" id="my_model_min_input">
                            <label class=" label" for="my_model_roosts_min">Min</label>
                            <input id="my_model_min" maxlength="4" name="my_model[min]" step="any" type="number">
                        </li>
                        <li class="number input optional stringish" id="my_model_max_input">
                            <label class=" label" for="my_model_max">Max</label>
                            <input id="my_model_roosts_max" maxlength="4" name="my_model[max]" step="any" type="number">
                        </li>
                    </ol>
                </fieldset>
            </li>
                <fieldset class="doublefield">
                    <legend><span>Zip/Place</span></legend>
                    <ol>
                    <li class="string input optional stringish" id="my_model_zip_input">
                        <label class=" label" for="my_model_zip">Zip</label>
                        <input id="my_model_zip" maxlength="255" name="my_model[zip]" type="text">
                    </li>
                    <li class="string input optional stringish" id="my_model_place_input">
                        <label class=" label" for="my_model_place">Place</label>
                        <input id="my_model_place" maxlength="255" name="my_model[place]" type="text">
                    </li>
                </ol>
            </fieldset>
        </ol>
    </fieldset>
</div>

4

1 回答 1

1

[编辑]给出了与 Formtastic 2 相关的答案

这是formtastic中的一个错误,已在3天前修复:https ://github.com/justinfrench/formtastic/commit/4c5bf686b7fc5bbbc2e03c61cace101e713a51e0

如果您不想等待发布(并且您可能不想),请使用 git 中的版本:

gem 'formtastic', :git => 'git://github.com/justinfrench/formtastic.git'
于 2011-10-26T17:09:57.137 回答