2017-06-27 160 views
-1

我正在顯示3k個用戶。當渲染助手link_to處理渲染速度變慢時。這需要很多時間。渲染助手時處理緩慢link_to

這是我的模板

- @user.each do |user| 
     %tr 
     %td= link_to_user_modal user 
     %td.text-right 
      = link_to edit_user_path(user.id), 
        class: 'btn btn-default btn-xs', 
        title: 'Edit' do 
      %span.glyphicon.glyphicon-pencil 

      = link_to user, 
        method: :delete, 
        title: 'Delete', 
        data: { confirm: "Are you sure you want to delete #{user}?" }, 
        class: "btn btn-danger btn-xs" do 
      %span.glyphicon.glyphicon-trash 
+0

_「我正在顯示3k用戶,[...]需要很多時間。」_ - 巧合? ;-) – Stefan

+0

@Stefan沒有這個幫手它需要7秒。 – Andy

+0

哦,我明白了,只有一個'link_to'或者全部三個? – Stefan

回答

1

渲染普通HTML而不是使用幫手大大提高了需要渲染的時間。 它不像「link_to」那樣重複渲染,而是更多的path_helper。雖然將原始的HTML視圖比任何都更快:

<a href="the/path/the_helper/would/render/#{user.id}" target="_blank" class="whatever">Edit</a> 

,而不是

link_to path_helper 

甚至(因爲助手是最大的罪魁禍首)

<a href="#{path_helper}" target="_blank">edit</a> 

check ruby-prof for the call trace - the only line that was changed was link_to to pure html with the id inserted dynamically into the href string

我也使用路徑助手測試了帶有href的標籤,儘管它是fa而不是link_to與路徑助手相比,它比用href作爲字符串慢。您還可以看到,我沒有在concateated href上調用.html_safe,這應該在標籤中更快地呈現它。

+0

客戶端不想使用will_paginate – Andy

+1

您是否嘗試過直接使用html而不是link_to helper? Delete ???對於所有三個link_to's ofc。這不是錯誤的:「你確定要刪除#{user}嗎?」不應該是user.name或什麼的? –

+0

不,我沒有嘗試過。我現在要去嘗試。至於'User.name',我在模型中有to_s別名和getter方法,所以一切都很好。 – Andy