我实际上只是在2009年5月回复问题时从railsforum复制了一个旧问题,而唯一的答复就是作者自己的优雅修复。我想知道是否有人知道更好的方法?否则我将最终使用javascript来移动隐藏的字段。
以下是原始问题:
你好! 感谢有关这个主题的任何好建议:是否可以覆盖Rails在fields_for中为has_many关联自动生成隐藏ID字段?我想创建自己的,以便我可以选择它的位置。
原因如下:
我试图将一个jQuery-ui Accordion小部件放在一个看起来有点像这样的表单中:
<div id="diagram_elements_form">
<% diagram_form.fields_for :elements do |element_fields| %>
<% link_to "#" do %>
<%= element_fields.object.name %>
<% end %>
<%= render :partial => "edit_element_base", :locals => { :f => element_fields } %>
<% end %>
</div>
模型,简化,看起来像:
class Diagram < ActiveRecord::Base
has_many :elements
accepts_nested_attributes_for :elements
end
我认为我的模型/控制器的东西是正确的,因为我可以CRUD到我的内心。但手风琴完全搞砸了。
jQuery UI/Accordion窗口小部件以以下形式查找html:
<div id="accordion">
<a href="#">First header</a>
<div>First content</div>
<a href="#">Second header</a>
<div>Second content</div>
</div>
使用rails这似乎很容易实现,但我真的很窒息。 标签显示但是有偏差,最后我意识到这是因为rails_field中每个对象自动为rails添加了hidden_field。我最终看起来像这样:
<div id="accordion">
<input type="hidden" name="...id" value="2" />
<a href="#">First header</a>
<div>First content</div>
<input type="hidden" name="...id" value="3" />
<a href="#">Second header</a>
<div>Second content</div>
</div>
......这样隐藏的字段就会被视为手风琴结构的一部分。我想移动DIV标签内的ID字段。有什么想法吗?
再次感谢, 泰勒
我和泰勒的问题完全相同。 fields_for生成的隐藏字段搞乱了手风琴UI,目前我看不到改变它们位置的方法,除非用javascript移动它们。
我将在railsforum上发布一个链接,以便Tyler能够获得集体智慧的任何好处。
此致
凯文。
答案 0 :(得分:3)
从Rails 2.3.5开始,您可以将f.hidden_field(:id)
置于您希望存在的位置,Rails将填写详细信息。
有关此更改的凭单为available here。