2
我想說明的同樣的事情更簡單的例子:爲什麼我的日誌顯示渲染兩次局部的Rails
Started GET "/greetings/new" for 127.0.0.1 at 2011-09-29 15:30:46 +0700
Processing by GreetingsController#new as JS
Board Load (0.6ms) SELECT "boards".* FROM "boards" WHERE "boards"."id" = 12 LIMIT 1
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Upload Load (0.2ms) SELECT "uploads".* FROM "uploads" WHERE ("uploads".uploadable_id = 1 AND "uploads".uploadable_type = 'User') LIMIT 1
Rendered greetings/_greeting_form.html.erb (108.9ms)
Rendered greetings/_greeting_form.html.erb (4.1ms)
Rendered greetings/new.js.erb (116.9ms)
Completed 200 OK in 302ms (Views: 126.5ms | ActiveRecord: 1.7ms)
的日誌顯示_greeting_form.html.erb正在呈現兩次。該部分通過對控制器的Ajax調用呈現。
控制器:
def new
@greeting = Greeting.new
@user = current_user || User.new
respond_to do |format|
format.js {render :action => 'new'}
end
end
new.js.erb
if($('#boxGreeting').length == 0){
$('#buttons').after($(" <%=escape_javascript(render 'greeting_form', :user => @user, :greeting => @greeting) %>").fadeIn('fast'));
}
else
{
$('#boxGreeting').replaceWith("<%=escape_javascript(render 'greeting_form', :user =>@user, :greeting => @greeting)%>");
}
你應該裝上新的模板和偏貴的問題,所以我們可以看到發生了什麼,如果它在日誌中呈現,我會在該部分的最開始處放置一個調試器,並計算它被觸發的次數(您也可以使用日誌行來執行) – ecoologic
它是可能你已經獲得了在循環中呈現'invite_form'的語句 - 檢查以確保只有您的意圖纔會呈現您的部分。 – sscirrus
如何添加一個調試器來計算頁面渲染的次數? – chell