2015-04-02 30 views
1

如何將js(Angular)變量傳遞給Rails?如何將js變量傳遞給Rails函數

JSON

[{"id":1,"title":"Test","selected":false,"url":"http://localhost:3000/vacancies/1.json"}] 

__

視圖

%div{"ng-repeat"=>"vacancy in vacancies"} # From Angular via JSON 
    - vacancy = Vacancy.find(vacancy.id) # I need to get a record here 

我有這樣一個錯誤undefined method id for nil:NilClass

空缺陣列正在打發罰款

如果這是不可能的,也許有另一種方式?

回答

0

你想達到的效果是不可能的,但有兩件事情是關閉一件事是關閉與您當前的做法:

  • 您不能執行一個ActiveRecord從視圖模板中查詢(即Vacancy.find(...))。此操作通常在控制器內執行。對我而言全腦抽筋 - 這是絕對有可能:P

  • 您正試圖用混合解釋Ruby代碼角範圍。你得到nil:NilClass異常的原因是因爲在Ruby代碼的範圍內,沒有定義的「空白」變量,即使它是在Angular的範圍內定義的。

,你可以實現空缺對象的檢索的方式是通過設置你的Rails數據庫後端和你的AngularJS前端之間通信的API層。該過程可能類似於:

  • 在您的Rails路由中爲您的api定義專用路由。
  • 設置一個Angular控制器,它會觸發對特定API路由的GET請求。
  • 一旦這條路線被擊中,你的特定的Rails控制器動作就開始了,它可以獲取空閒對象並返回一個JSON響應。
  • 然後,您的Angular代碼可以處理提供的響應,將返回的空缺JSON對象分配給$scope.vacancies
  • 然後,您可以在您的視圖中執行ng-repeat,並且您將在vacancies集合中擁有完整的空缺對象,而無需將每個對象作爲單獨的請求提取。

我認爲this article可以給你一個更清晰的例子來解決。

關於將Rails與AngularJS集成的主題,有大量信息可以涵蓋,我知道你並沒有特別要求,但本書涵蓋了Rails和Angular相結合的基礎知識。 AngularJS + Rails

+1

其實我可以在視圖模板中執行查詢。它工作的一切:) 謝謝你的鏈接。 – 2015-04-02 18:53:46

+0

這沒問題!我希望這有幫助!我編輯了我的答案,以排除不正確的第一個要點 - 不知道爲什麼我寫道它不能完成:P感謝您的反饋! – Zoran 2015-04-02 19:14:45