Как сохранить связанный объект в Rails / Active Record - PullRequest
0 голосов
/ 13 января 2012

Допустим, у меня есть две модели: Команда --1 --- n -> Игрок В словах: команда может иметь много игроков. Игрок принадлежит команде.

На странице, которая показывает Team-Data, я хочу разместить ссылку «создать игрока».

В контроллере игроков, как мне создать игрока, чтобы он связывался с командой, просматриваемой там, где была размещена ссылка "создать игрока"?

Должен ли я

1. передать идентификатор команды на контроллер 'create Players' и

2. найдите команду, используя идентификатор команды, а затем

3. примерно так: @new_player = @team.players.build(...)

Могу ли я использовать один из маршрутов ресурсов для ссылки «создать игрока»?

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Если команды и игроки будут добавлены с помощью отдельных форм:

Вы можете включить team_id в форму для нового игрока или вложить маршрут для игроков в сферу команд и вытащить team_id изURL-параметры, такие как params[:team_id].

Маршрут с вложенными игроками:

    resources :teams do
      resources :players
    end

В представлении вашей команды / шоу (страница сведений о команде), Создать ссылку на игрока:

    <%= link_to 'Create Player', new_team_player_path(@team) %>

В форме игроков:

    <% form_for [@team, @player] do |f| %>
    <!-- your form here -->
    <%- end -%>

В контроллере игроков:

    def new
      @team = Team.find params[:team_id]
      @player = Player.new
    end

    def create
      @player = Player.new params[:player]
      @player.team_id = params[:team_id] # => if just grabbing the id from the url params
      if @player.save
        # flash and redirect
      else
        # show form again
      end
    end

В противном случае см. Railscast о вложенных атрибутах, упомянутых @Antoine, для указания как новой команды, так и информации об игроке.одна форма.(Я думаю, что вы ищете, это первый вариант с двумя формами, но я мог бы быть далеко.)

Для получения дополнительной информации о маршрутизации вложенных ресурсов см. Руководство по маршрутизации Rails .Чтобы увидеть, какие маршруты доступны в вашем приложении, запустите rake routes из командной строки в корне вашего приложения.

1 голос
/ 13 января 2012

Я думаю, что nested_attributes может вам помочь.

Часы это Railscast об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...