Hec*_*eal 10 ruby-on-rails fields-for ruby-on-rails-3 simple-form
这是一个简单的问题,我有点惭愧地问,但是我一直在撞墙并在导轨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>
Run Code Online (Sandbox Code Playgroud)
生成的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>
Run Code Online (Sandbox Code Playgroud)
我想要做的是将<div class="fields">包装器标签更改为<li>.
文档说您可以将选项传递给fields_for,但是不清楚您可以传递哪些选项,也许您可以更改此包装器标记?
可能是覆盖一个函数,有点像ActionView::Base.field_error_proc表单中的错误.
快速编辑:我忘了提到我正在使用simple_form生成此表单.我尝试在simple_form.rb配置文件中查找自定义方法,但我没有看到任何方法.
解决方案 经过进一步调查后,结果表明表单也使用了nested_form gem来生成表单(不仅仅是simple_form).这个生成器导致fields_for被包装在div标签中.谢谢大家的建议!
lul*_*ala 11
以下禁用包装器:
f.fields_for :images, wrapper:false do |image_builder|
Run Code Online (Sandbox Code Playgroud)
然后你可以在构建器块中添加自己的包装器.
一个便宜的解决方案只是将<li>标签添加到表单中,例如:
<%= f.fields_for :images do |image_builder| %>
<li><%= render "images/form", :f => image_builder %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我不确定您是否可以通过将一些参数传递给 来完全消除 div 标签field_for。但我认为你可以通过传递 html 块来更改 div 类或 id 的名称,如下所示form_for:
<%= form_for @image, :as => :post, :url => post_image_path,
:html => { :class => "new_image", :id => "new_image" } do |f| %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7640 次 |
| 最近记录: |