我正在使用rails 3 gem nested_forms,并希望更改生成插入的默认蓝图的方式。我无法弄清楚这些代码将来自何处/何处,以及我将如何/在何处添加代码来修改它。
我目前正在使用部分表格:
/app/views/units/_unit.html.haml
%tr
%td=f.text_field :units
%td=f.text_field :dispatched
%td=f.text_field :onscene
%td=f.text_area :actions
调用partial:
的代码段/app/vies/reports/_form.html.haml
...
%table.units
%th Unit
%th Dispatched%th On Scene
%th Actions
=f.fields_for :units
%p= f.link_to_add "Add a unit", :units
...
除模板外,我的所有核心功能都有效。这是由gem在运行时自动创建的。此模板导致非常简单的HTML标记用于模板。
类似于以下内容:
<div id="units_fields_blueprint" style="display:none">
<p class="fields">
<input id="report_units_attributes_new_units_unit" name="report[units_attributes][new_units][unit]" size="30" type="text">
<input id="report_units_attributes_new_units_dispatched_1i" name="report[units_attributes][new_units][dispatched(1i)]" type="hidden" value="2011">
...
</p>
</div>
我希望蓝图能够获得部分表格格式,我只是不知道如何到达那里。
任何帮助都将不胜感激。
答案 0 :(得分:0)
当放置在蓝图div中时,仅包含表行的部分(如上面列出的)将不是有效标记。
以下代码无效标记。
<div>
<tr>
<td>Content</td>
</tr>
</div>
某些浏览器(例如chrome)会尝试纠正这个糟糕的标记,这是通过剥离tr和td标记来完成的。
要使这种类型的代码与nested_form一起使用会很复杂,需要在javascript字符串中创建蓝图,并且需要修改构建器以自动停止在代码块中插入插入的代码。
这些更改在issue #73 for nested_form中解决,它引用由github用户elmatou创建的分支。
获得类似外观的另一个选择是使用div和spans并使用CSS创建网格结构。这是一个CSS密集型过程,但允许使用nested_form而无需更改。