ruby-on-rails-3 - Rails 3 Cocoon link_to_add_association 渲染部分两次

标签 ruby-on-rails-3 nested-attributes cocoon-gem

正如预期的那样,我的部分被渲染了两次而不是一次。有什么想法吗?

这是我的个人 View

<%= simple_nested_form_for(@person) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">

    <%= f.input :name %>

    <h3>Records by year</h3>

    <div id='records'>
      <%= f.simple_fields_for :records do |record| %>
        <%= render 'record_fields', :f => record %>
      <% end %>

      <div class='links'>
        <%= link_to_add_association 'New Record', f, :records, :class => 'btn' %>
      </div>
    </div>

  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

模型(删除了常量和验证等内容):
class Person < ActiveRecord::Base

    attr_accessible :name, :records_attributes

    has_many :records, :dependent => :destroy
    accepts_nested_attributes_for :records, :reject_if => :all_blank, :allow_destroy => true

end

class Record < ActiveRecord::Base

    attr_accessible :price, :status, :year, :person_id

    belongs_to :person
end

我的 _record_fields.html.erb 部分如下所示:
<div class='nested-fields well'>
    <%= f.input :price %>

    <%= f.input :year %>

    <%= f.input :status, :collection => record_statuses, :include_blank => false %>

    <%= link_to_remove_association "Remove", f %>
</div>

一个有趣的问题是,如果我更改生成部分的位置(因此在 link_to_add_association 链接的“之后”而不是默认的“之前”),它会在按钮之后生成部分,但在 link_to_add_association 链接之前生成副本。

我能找到的这里报告的唯一类似问题是生产中的缓存。这发生在开发中,我的缓存已关闭(默认情况下)。

我错过了什么吗?任何人都可以帮忙吗?

编辑:
查看 cocoon JavaScript,似乎单击事件会为一次单击调用两次(使用 $('.add_fields').click() 对其进行测试,这会触发 $('.add_fields').live('click', function () {...} ) 两次。我仍然不知道为什么会发生这种情况。非常感谢输入。

编辑 #2:

Controller :
  # GET /persons/new
  # GET /persons/new.json
  def new
    @person = Person.new
    # @person.records.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @person }
    end
  end

  # GET /persons/1/edit
  def edit
    @person = Person.find(params[:id])
  end

最佳答案

我遇到了同样的问题。
我的问题是我需要两次 cocoon javascript。

一旦在我的 application.js

// app/assets/javascripts/application.js
//= require cocoon

一旦在我的应用程序布局中
/ app/views/layouts/application.html.haml
= javascript_include_tag :cocoon

从我的布局中删除包含标签后,它开始按预期工作

关于ruby-on-rails-3 - Rails 3 Cocoon link_to_add_association 渲染部分两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482001/

相关文章:

ruby-on-rails - Rails 4 不通过 JSON 更新嵌套属性

ruby-on-rails - Rails 茧嵌套形式 : undefined method `reflect_on_association' for NilClass:Class

ruby-on-rails - geokit-rails 的未定义方法 'merge_conditions'

ruby-on-rails - 在保存模型之前访问所有关联,包括嵌套属性

ruby-on-rails - 具有嵌套属性的 simple_form

javascript - 为什么我的代码中的 cocoon 不捕获回调?

ruby-on-rails - 如何在 Rails 6 中使用 cocoon gem

ruby-on-rails - rails : Redirecting all routes in a namespace to root

ruby-on-rails-3 - Rails CSS 加载,但未应用样式

ruby-on-rails-3 - 如何在 Rails 中传递 Bootstrap 变量