2016-09-07 2 views
0

私はプールがたくさんあるトーナメント記録を持っています。私はangularjsでプールを生成することができますし、ユーザーがそれらを承認すると、それらはレールバックエンドに送られて作成され、データベースに保存されます。アクティブなレコードで作成するanglejsを介してオブジェクトのコレクションを送信するにはどうすればよいですか?

これを行う方法の説明が難しいです(検索に使用する言語がわからないと思われます)。角度サービス

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

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 

私はいくつかの側面を行う方法にはかなり混乱していますこれの。 1)コントローラにプールのコレクションを受け取らせるにはどうすればよいですか? jsは{pools:[pool1、pool2、etc.]のようにそれを渡す必要がありますか? 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) }); 
    }; 

幸運を祈る!

関連する問題