fields_for和jQuery手风琴兼容性

时间:2010-07-07 23:18:59

标签: jquery ruby-on-rails jquery-ui accordion jquery-ui-accordion

我实际上只是在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能够获得集体智慧的任何好处。

此致

凯文。

1 个答案:

答案 0 :(得分:3)

从Rails 2.3.5开始,您可以将f.hidden_field(:id)置于您希望存在的位置,Rails将填写详细信息。

有关此更改的凭单为available here