【发布时间】:2012-01-20 02:18:42
【问题描述】:
这是一个我有点不好意思问的简单问题,但我一直在用头撞墙并浏览 rails 3 文档,但没有任何成功:/
所以,事情是这样的:
当我使用 fields_for 助手时,它会将生成的字段包装在 <div class="fields"> ... </div> 标记中。
所以,我的代码是
<ul class="block-grid two-up">
<%= f.fields_for :images do |image_builder| %>
<%= render "images/form", :f => image_builder %>
<% end %>
</ul>
生成的html是:
<ul class="block-grid two-up">
<div class="fields">
<div>
<label for="company_images_attributes_0_image"> Image</label>
<input id="company_images_attributes_0_image"
name="company[images_attributes][0][image]" type="file">
</div>
</div>
<div class="fields">
<div>
<label for="company_images_attributes_1_image"> Image</label>
<input id="company_images_attributes_1_image"
name="company[images_attributes][1][image]" type="file">
</div>
</div>
</ul>
我想要做的实际上是将<div class="fields">包装标签更改为<li>。
文档说您可以将选项传递给fields_for,但不清楚您可以传递哪些选项,也许您可以更改这个包装标签?
当表单中有错误时,可能会覆盖一个函数,有点像ActionView::Base.field_error_proc。
快速编辑:我忘了提到我正在使用 simple_form 来生成这个表单。我尝试在 simple_form.rb 配置文件中寻找一种自定义方法,但我没有看到任何方法。
解决方案 经过进一步调查,事实证明该表单也在使用nested_form gem 来生成表单(不仅仅是 simple_form)。这个生成器导致 fields_for 被包装在 div 标签中。谢谢大家的建议!
【问题讨论】:
-
field_error_proc 方法是规范的。 (IIRC 需要注意的是它的参数是一个 HTML 字符串而不是有用的东西,但我可能会将它与其他东西混淆。)
标签: ruby-on-rails ruby-on-rails-3 simple-form fields-for