Ruby on rails 填充嵌套表单时的渲染性能-Rails 4-OmniContacts

Ruby on rails 填充嵌套表单时的渲染性能-Rails 4-OmniContacts,ruby-on-rails,forms,ruby-on-rails-4,omnicontacts-gem,Ruby On Rails,Forms,Ruby On Rails 4,Omnicontacts Gem,在我的应用程序中,我使用OmniContacts gem允许用户导入他们的联系人。这很有效。为Gmail获取联系人大约需要300-500毫秒 为了允许导入联系人,我将他们放在一个嵌套的形式中。现在,每个触点的渲染需要175-300毫秒,乘以1000,这就糟了 我希望有一个rails解决方案来解决这个问题。否则,我猜使用AJAX和JS表单可能会奏效。感谢您的想法和时间 导入控制器: def import @user = current_user @import = reques

在我的应用程序中,我使用OmniContacts gem允许用户导入他们的联系人。这很有效。为Gmail获取联系人大约需要300-500毫秒

为了允许导入联系人,我将他们放在一个嵌套的形式中。现在,每个触点的渲染需要175-300毫秒,乘以1000,这就糟了

我希望有一个rails解决方案来解决这个问题。否则,我猜使用AJAX和JS表单可能会奏效。感谢您的想法和时间

导入控制器:

  def import
    @user = current_user
    @import = request.env['omnicontacts.contacts']
    @contacts = @import.map do |contact_info|
      Contact.new(
        first_name: contact_info[:first_name],
        last_name:  contact_info[:last_name],
        email_home: contact_info[:email],
        phone_home: contact_info[:phone]
      )
    end

    respond_to do |format|
      format.html
    end
  end
<div class="row">
  <div class="small-12">
    <%= simple_form_for(@user, url: import_path) do |f| %>
        <%= f.simple_fields_for :contacts, @contacts do |contact| %>
            <%= render 'contact_fields', f: contact %>
        <% end %>
        <div class="actions" align="right">
          <%= f.submit class:"button tiny" %>
        </div>
    <% end %>
  </div>
</div>
<div class='nested-fields'>
  <fieldset>
  <div class="row">
    <div class="small-2 columns">
      <%= f.input :import, as: :boolean %>
    </div>
    <div class="small-2 columns">
      <%= f.input :first_name %>
    </div>
    <div class="small-2 columns">
      <%= f.input :last_name %>
    </div>
    <div class="small-4 columns">
      <%= f.input :email_home %>
    </div>
    <div class="small-2 columns">
      <%= f.input :phone_home %>
    </div>
  </div>
  </fieldset>
</div>
导入视图:

  def import
    @user = current_user
    @import = request.env['omnicontacts.contacts']
    @contacts = @import.map do |contact_info|
      Contact.new(
        first_name: contact_info[:first_name],
        last_name:  contact_info[:last_name],
        email_home: contact_info[:email],
        phone_home: contact_info[:phone]
      )
    end

    respond_to do |format|
      format.html
    end
  end
<div class="row">
  <div class="small-12">
    <%= simple_form_for(@user, url: import_path) do |f| %>
        <%= f.simple_fields_for :contacts, @contacts do |contact| %>
            <%= render 'contact_fields', f: contact %>
        <% end %>
        <div class="actions" align="right">
          <%= f.submit class:"button tiny" %>
        </div>
    <% end %>
  </div>
</div>
<div class='nested-fields'>
  <fieldset>
  <div class="row">
    <div class="small-2 columns">
      <%= f.input :import, as: :boolean %>
    </div>
    <div class="small-2 columns">
      <%= f.input :first_name %>
    </div>
    <div class="small-2 columns">
      <%= f.input :last_name %>
    </div>
    <div class="small-4 columns">
      <%= f.input :email_home %>
    </div>
    <div class="small-2 columns">
      <%= f.input :phone_home %>
    </div>
  </div>
  </fieldset>
</div>

事实证明这个问题很简单。将表格部分更改为:

<div class='nested-fields'>
  <fieldset>
  <div class="row">
    <div class="small-1 columns">
      <%= f.label "Import" %>
      <%= f.check_box :import %>
    </div>
    <div class="small-2 columns">
      <%= f.label :firs_name %>
      <%= f.text_field :first_name %>
    </div>
    <div class="small-2 columns">
      <%= f.label :last_name %>
      <%= f.text_field :last_name %>
    </div>
    <div class="small-4 columns">
      <%= f.label :email_home %>
      <%= f.text_field :email_home %>
    </div>
    <div class="small-3 columns">
      <%= f.label :phone_home %>
      <%= f.text_field :phone_home %>
    </div>
  </div>
  </fieldset>
</div>