Как отправить коллекцию объектов через angularjs для создания в активной записи?

0

У меня есть запись турнира, в которой много пулов. Я хотел бы иметь возможность генерировать пулы в 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 как {пулы: [пул1, пул2 и т.д.]}? и тогда я бы получил доступ к нему через params ["pool"]?

2) Как сделать сильную печать с помощью коллекции? Я не уверен, какой правильный способ сильно набирать каждый отдельный пул в данной коллекции.

3) Если собственность "фехтовальщиков" сама по себе является другим объектом. Есть ли дополнительные изменения, которые мне нужны для этого?

Благодарю! Пожалуйста, дайте мне знать, если я могу что-то объяснить.

1 ответ

0

Я разработчик.net, но, возможно, общий совет может стать полезным для этой проблемы.

В ASP.Net MVC, если я отправляю коллекцию, как следующий код, она автоматически привязывает ее для меня к типизированному списку. обратите внимание, как пулы передаются в объекте параметра.

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

Если бы у меня не было.net magical binding, тогда я бы послал сериализованную строку пулов, а затем на стороне сервера (ваш случай Ruby), я бы десериализовал эту строку

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

Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню