2012-05-29 83 views
9

我有兩種方法可以在Rails 3應用程序中實現ajax。在Rails 3中用於Ajax的.js.erb的用法(jquery .js vs .js.erb)

1-使用jquery在文件viewaction.js或viewaction.js.coffee中提交綁定事件,並管理返回的json以修改DOM中的內容。

2-在Rails中使用remote => true標記並編寫名爲viewaction.js.erb的文件以在DOM中進行修改並使用控制器中加載的類變量。

  • Rails 3中推薦的方法是什麼?
  • 什麼是Rails的方式來做到這一點?
  • 最佳做法是什麼?
  • 其中一個替代方案優於 其他方案的特定方案?
  • 大項目的建議是什麼?

由於

回答

9

在此之前的Rails 3,加入:remote => true會產生的形式標記內一堆內嵌JavaScript的,但與導軌3 UJS,唯一的改變是增加一個HTML 5自定義屬性data-remote=true的。例如:

<%= form_for(@post, :remote => true) do |f| %> 

會產生

就目前而言,這是Rails3中的做法。生成它的js函數在rails.js文件下。 如果您打開rails.js文件,您將注意到幾個遠程處理程序定義。第一個處理遠程表單提交的情況,第二個處理遠程鏈接和輸入字段,第三個處理非遠程鏈接,應該表現得像表單。

looking deeper into the code我發現這個文件的實際執行jQuery的AJAX調用:

ajax: function(options) { 
     return $.ajax(options); 
    }, 

所以存在使用:remote => true和常規jQuery的AJAX調用沒有什麼區別鐵軌就像一個包裝調用相同的方法。

更多信息here,herehere

+0

我明白,如果您深入瞭解,沒有區別。但從代碼清晰度,可維護性和最佳實踐的角度來看,您的意見是什麼? – Tony

+0

正如我在我的回答中所說 - rails的方式是添加:remote => true。這使得跨所有rails3應用程序的代碼標準 –

+0

我已閱讀意見,說它分割應用程序的前端邏輯(具有多個.js.erb)。你對此有何看法? – Tony