2009-06-08 145 views
1

我看到這個代碼在Rails控制器:什麼時候「respond_to do | format |」對Javascript有意義嗎?

respond_to do |format| 
    format.js {} 
end 

我已經看到了這個對XML和HTML格式,但沒有爲Javascript。

如果您使用REST,這是您指定返回格式的方式,就像您使用replace_htmlremote_form_for一樣?我知道RJS模板返回編譯的JavaScript,所以我想也許這是這個代碼可能踢在哪裏。

如果你把代碼放在哈希符號(format.js {})中,那麼是什麼被作爲javascript發送回瀏覽器?

+1

另外一個模板,你可能會遇到響應是format.rss ,飼料。 – Jarrod 2009-06-08 20:13:44

回答

1

它在AJAX請求從瀏覽器發送到控制器時使用。控制器可以使用腳本(在視圖中由ruby語句生成)來響應,該腳本將在客戶端上執行。

1

Rails會在搞清楚什麼「模板」送出去

in controller: 
    def foo 
    end 

in view: (app/views/controller/) you can have 
    foo.html.erb (usual, html template) 
    foo.rjs (javascript template) 

鐵軌會發出正確的模板返回給瀏覽器,HTML定期requets和RSJ爲Ajax請求一個小魔術。您可能需要在您的RJS模板中放入JavaScript代碼,例如「page.replace_html」..etc。通過這種方式,您可以讓控制器清除查看代碼。

0

yuo總是可以將格式添加到url並查看它的響應,/something.js將使用format.js代碼進行響應,如果要使用它,可以執行以下操作以避免呈現整個佈局:

format.js { render :layout => false, :text => @models.to_json } 

,將有一個JSON字符串

format.js { render :layout => false } 

將需要一個名爲[動作] .js.erb

相關問題