在我的应用程序中,我使用 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>
末日日志:(闭上眼睛想象添加了 1000 多条渲染线)
Started GET "/oauth2callback?code=4/XzHDNPJ8RgRb7SFStQ3tVM-ff2q5WolrVHTsokI0egg" for ::1 at 2015-06-18 12:16:09 -0500
Processing by ImportsController#import as HTML
Parameters: {"code"=>"4/XzHDNPJ8RgRb7SFStQ3tVM-ff2q5WolrVHTsokI0egg"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Rendered imports/_contact_fields.html.erb (301.0ms)
Rendered imports/_contact_fields.html.erb (233.9ms)
Rendered imports/_contact_fields.html.erb (276.8ms)
Rendered imports/_contact_fields.html.erb (180.3ms)
Rendered imports/import.html.erb within layouts/application (1001.0ms)
Rendered layouts/_header.html.erb (2.8ms)
Rendered layouts/_footer.html.erb (3.8ms)
Completed 200 OK in 1548ms (Views: 1540.0ms | ActiveRecord: 0.5ms)