2010-07-31 46 views
4

我最近開始學習基於RoR3 beta/RC的Ruby on Rails。我之前一直在使用其他框架(如Django)開發應用程序,其中的JavaScript完全是由我自己編寫的。Rails 3:RJS vs JavaScript

使用RoR開發應用程序時,我對實現JavaScript的兩種可能方式感到困惑:「純」(編寫JavaScript並將其放入<script>標記)和編寫RJS文件。

哪種方法應該用於何時?如果RJS,我如何實施像onChange這樣的特定操作?

回答

6

在rails中,您應該將兩種方法用於不同的任務。我也是如此。當我想執行ajax請求時,我使用RJS,因爲它簡化了請求,並允許使用更少的代碼在.rjs文件中編寫更強大和靈活的響應。例如,可以使用partials並訪問ruby變量。當我想使網頁更具動感時,我使用普通的javascript,包括它與javascript_include_tag

UPD。 這種方法在導軌3中以相同的方式工作。可以將它與JQuery和HAML結合使用。 Rails 3中的UJS甚至簡化了它。你應該做的唯一的事情就是使用jquery-ujs,如果你更喜歡Jquery over Prototype和適當的文件命名如create.js.haml。 例如,可以使用此方法在AJAX請求中使用server-side validation

4

在rails 3中,正確的做法是純JS。 RJS太嚴格了,你必須以某種方式使用Prototype或hack來與jQuery一起使用它。 Rails 3還促進了不引人注意的JavaScript。在AJAX請求中,您應該返回純ERB嵌入ERB而​​不是使用RJS。

不幸的是,由於這種改變需要對使用RJS的較老項目進行大量的返工,因此有些人會離開它。

RJS實際上是在rails 3中折舊的,你需要一個插件來處理它,所以如果你現在就開始了,並且你已經足夠幸運地開始在rails 3上,那就去rails 3的方式。

這裏是新UJS方式一個很好的例子: http://railscasts.com/episodes/205-unobtrusive-javascript

好運

+0

這是最好的答案。不應再使用RJS,最接近的方法是呈現'.js.erb'文件。如果客戶端發出AJAX請求(如果使用jQuery,請鍵入'script'),那麼服務器動作就會例如'render partial:'/ whatever/partial'。部分文件將是'PROJECT_ROOT/app/views/whatever/_partial.js.erb'。 – antinome 2014-07-30 18:27:33