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