2016-09-07 18 views
0

我有一個錦標賽記錄有很多池。我希望能夠以angularjs生成池,然後當用戶批准它們時,它們將被髮送到rails後端以創建並保存到數據庫中。如何通過在活動記錄中創建的angularjs發送對象集合?

我很難找到一個很好的解釋如何做到這一點(我懷疑我不知道在搜索中使用正確的語言)。

在routes.rb中

resources :tournaments, only: [:create, :index, :show] do 
    resources :fencers, only: [:show, :create] do 
    end 

    resources :pools, only: [:show, :create, :destroy] do 
    end 

    collection do 
    put '/create_pools' => 'pools#create_pools' 
    end 
end 

在池控制器

class PoolsController < ApplicationController 
    def create_pools 
    tournament = Tournament.find(params[:tournament_id]) 
    tournament.pools.destroy_all # destroy existing pools. 

    params["pools"].each do |p| 
     tournament.pools.create(comment_params) 
    end 

    respond_with tournament, tournament.pools 
    end 

    private 
    def pool_params 
    #params.require(:pool).permit(:number, :strip, :fencers) 
    params.permit(:pool, array: [:number, :strip, :fencers]) 
    end 
end 

在一個角服務

o.savePools = function(id, pools) { 
    return $http.post('/tournaments/' + id + '/create_pools.json', pools); 
    }; 

我就怎麼做了許多方面很困惑這個的。 1)如何讓控制器接收池的集合? js是否需要像{pools:[pool1,pool2等]}一樣通過它?然後我會通過params [「pools」]訪問它?

2)如何使用集合強打字?我不確定在給定集合中強制鍵入每個單獨池的正確方法。

3)如果「fencers」屬性本身就是另一個對象。我還需要其他更改嗎?

謝謝!請讓我知道,如果有什麼我可以澄清。

回答

0

我是一名.net開發人員,但也許一般建議可以成爲這個問題的有用。

在ASP.Net MVC中,如果我發佈如下代碼的集合,它會自動將它綁定到一個類型列表。請注意池在參數對象中的傳遞方式。

o.savePools = function(id, pools) { 
    return $http.post('/tournaments/' + id + '/create_pools.json', { "pools": pools }); 
    }; 

如果我沒有NET的神奇結合,那我就送池的序列化的字符串,然後在服務器端(你的情況下,Ruby端),我會反序列化該字符串

o.savePools = function(id, pools) { 
    return $http.post('/tournaments/' + id + '/create_pools.json', { "poolsJson": JSON.stringify(pools) }); 
    }; 

祝你好運!

相關問題