2011-05-19 58 views
1

我的工作我的第一個「真正的」(而不是玩弄)導軌使用軌道1 & 2在過去的四年後3項目。在銷燬行爲的js塊中,我想要做一些典型的操作:刪除包含頁面上已刪除資源的div。Rails 3 js塊:使用jquery片段呈現部分內容或將內容呈現爲文本片段?

我無法決定渲染出如下所示的destroy.js.erb文件是否更好:(所討論的資源是'note',方法.dom_id只是返回一個字符串,如「note _#{note .ID}」)

方法答:呈現一個js視圖文件

#in controller 
    format.js 

#in views/notes/destroy.js.erb 
$('#<%= @note.dom_id %>').remove(); 

這有保持控制器完全乾淨和標準的優勢。

方法B:把JS控制器:

#in controller 
format.js { render :text => "$('##{@note.dom_id}').remove()" } 

這有讓看的控制器代碼,來即時查看發生了什麼事情,沒有去打獵了一個視圖文件的人的優勢它的代碼行。另一方面,它打破了MVC。

您認爲如何?哪個更「適當」,「標準」等?還有第三種(第四,第五種)更好嗎?

回答

3

我會傾向於遵循方法A,即使您可能只有幾行代碼。原因是你可能有一個隊友看到方法B,並決定當你需要向渲染添加更多的JavaScript時,使用內聯方法是正確的方法。內嵌JavaScript可以(根據我讀過的)用於非常簡單的一行,但即使如此也不推薦。

如果你想避免到處尋找合適的JS視圖文件,你總是可以呈現一個特定的文件,而不是繼「文件 - >控制行動」命名約定。這樣你的控制器就可以清楚地看到你正在使用的js.erb文件。

+0

這一切似乎明智,謝謝@McStretch。我有點偏向那個方向。 – 2011-05-19 12:42:25

+0

沒問題@Max。我總是有同樣的疑慮,特別是對於單線隊員。我猜想另一個總是爲*方法A *的原因是你可能會有一些包含很多JavaScript的js.erbs(你不會內聯),所以你可以保持它的一致性,總是去文件路線。這將使未來的決定容易,因爲你總是沿着一條路線走下去。 – McStretch 2011-05-19 12:52:04