rails cocoon gem没有错误也没有输出

时间:2012-08-05 00:57:55

标签: ruby-on-rails simple-form nested-forms cocoon-gem

我正在使用cocoon gem处理动态嵌套表单。我有两个型号

class CrossTable < ActiveRecord::Base
  attr_accessible :title, :table_name, :database, :folder_label_id, :foreign_fields_attributes

  belongs_to :folder_label
  has_many :foreign_fields

  accepts_nested_attributes_for :foreign_fields

  validates :title, :table_name, :database, :folder_label_id, presence: true

end


class ForeignField < ActiveRecord::Base
  attr_accessible :cross_table_id, :column_name, :description

  belongs_to :cross_table
  has_many :filter_sets


end

我在gemfile中有cocoon和jquery-rails 我在app.js文件中添加了// = require cocoon

这是我的表格部分

<%= simple_form_for @table do |f| %>
    <%= f.input :title %>

    <%= f.input :folder_label_id, :collection => @folders, :label_method => :title, :value_method => :id %>
    <br><br>
    <%= f.input :table_name %>
    <%= f.input :database %>

    <%= f.simple_fields_for :foreign_fields do |fields| %>
        <%= render 'foreign_field_fields', :f => fields %>
        <div id='links'>
            <%= link_to_add_association 'Add Field', f, :foreign_fields %>
        </div>
        <% end %>

    <%= f.button :submit %>

<% end %>

@table是交叉表模型的一个实例。 foreign_field_fields partial中没有任何内容显示,link_to_add_association什么都不做,我没有错误。我该如何开始调试呢?有没有人发现错误?

1 个答案:

答案 0 :(得分:5)

您在link_to_add_association内写了simple_fields_for,它将遍历所有:foreign_fields并执行给定的块。因此,如果还没有外国字段,则link_to_add_association永远不会显示。

您应该按照以下方式编写视图(如文档所述):

<%= simple_form_for @table do |f| %>
    <%= f.input :title %>

    <%= f.input :folder_label_id, :collection => @folders, :label_method => :title, :value_method => :id %>
    <br><br>
    <%= f.input :table_name %>
    <%= f.input :database %>

    <%= f.simple_fields_for :foreign_fields do |fields| %>
        <%= render 'foreign_field_fields', :f => fields %>
    <% end %>
    <div id='links'>
      <%= link_to_add_association 'Add Field', f, :foreign_fields %>
    </div>

    <%= f.button :submit %>

<% end %>

希望这有帮助。